Skip to content

Index

subsurfaceio.footing_foundation

Footing / shallow foundation API.

Compute shallow footing bearing capacity for Terzaghi, Vesic, or Meyerhof methods:

from subsurfaceio.footing_foundation import FootingFoundation

FootingFoundation(model=terzaghi_inputs).calculate()

Classes:

Name Description
FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResults

Meyerhof strong-sand-on-soft-clay footing capacity results.

FootingCapacityMeyerhof1978StrongSandOnWeakSandResults

Meyerhof strong-sand-on-weak-sand footing capacity results.

FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResults

Meyerhof strong-clay-on-soft-clay footing capacity results.

FootingCapacityParametricResults

Parametric footing capacity results.

FootingCapacityParametricResultsData

Parametric footing capacity result row.

FootingCapacityTerzaghi1943Results

Terzaghi footing capacity results.

FootingCapacityVesic1975Results

Vesic footing capacity results.

FootingFoundation

Shallow footing bearing capacity (Terzaghi, Vesic, Meyerhof).

FootingFoundationMeyerhof1978StrongSandOnSoftSaturatedClay

Meyerhof strong-sand-on-soft-clay footing capacity method.

FootingFoundationMeyerhof1978StrongSandOnWeakSand

Meyerhof strong-sand-on-weak-sand footing capacity method.

FootingFoundationMeyerhof1978StrongSaturatedClayOnSoftSaturatedClay

Meyerhof strong-clay-on-soft-clay footing capacity method.

FootingFoundationMixin

Shared footing geometry and soil inputs for capacity methods.

FootingFoundationParametricAnalysis

Parametric shallow footing bearing capacity.

FootingFoundationTerzaghi1943

Terzaghi footing capacity method.

FootingFoundationVesic1975

Vesic footing capacity method.

Attributes:

Name Type Description
DiscriminatedFootingMethodModel TypeAlias

Method model discriminated on method.

FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResultsMetadata
FootingCapacityMeyerhof1978StrongSandOnWeakSandResultsMetadata
FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResultsMetadata
FootingCapacityTerzaghi1943ResultsMetadata
FootingCapacityVesic1975ResultsMetadata
FootingMethodModel TypeAlias

Undiscriminated union of footing capacity method models.

RESULTS

DiscriminatedFootingMethodModel module-attribute

DiscriminatedFootingMethodModel: TypeAlias = Annotated[
    FootingMethodModel,
    Field(
        discriminator="method",
        description="Footing capacity method",
    ),
]

Method model discriminated on method.

FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResultsMetadata module-attribute

FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResultsMetadata = create_model(
    "FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResultsMetadata",
    __base__=BaseModel,
    **as_fields(
        FunctionSequences.FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClay.return_names(
            scalar=True
        )
    )
)

FootingCapacityMeyerhof1978StrongSandOnWeakSandResultsMetadata module-attribute

FootingCapacityMeyerhof1978StrongSandOnWeakSandResultsMetadata = create_model(
    "FootingCapacityMeyerhof1978StrongSandOnWeakSandResultsMetadata",
    __base__=BaseModel,
    **as_fields(
        FunctionSequences.FootingCapacityMeyerhof1978StrongSandOnWeakSand.return_names(
            scalar=True
        )
    )
)

FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResultsMetadata module-attribute

FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResultsMetadata = create_model(
    "FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResultsMetadata",
    __base__=BaseModel,
    **as_fields(
        FunctionSequences.FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClay.return_names(
            scalar=True
        )
    )
)

FootingCapacityTerzaghi1943ResultsMetadata module-attribute

FootingCapacityTerzaghi1943ResultsMetadata = create_model(
    "FootingCapacityTerzaghi1943ResultsMetadata",
    __base__=BaseModel,
    **as_fields(
        FunctionSequences.FootingCapacityTerzaghi1943.return_names(
            scalar=True
        )
    )
)

FootingCapacityVesic1975ResultsMetadata module-attribute

FootingCapacityVesic1975ResultsMetadata = create_model(
    "FootingCapacityVesic1975ResultsMetadata",
    __base__=BaseModel,
    **as_fields(
        FunctionSequences.FootingCapacityVesic1975.return_names(
            scalar=True
        )
    )
)

FootingMethodModel module-attribute

FootingMethodModel: TypeAlias = (
    FootingFoundationTerzaghi1943
    | FootingFoundationVesic1975
    | FootingFoundationMeyerhof1978StrongSandOnSoftSaturatedClay
    | FootingFoundationMeyerhof1978StrongSandOnWeakSand
    | FootingFoundationMeyerhof1978StrongSaturatedClayOnSoftSaturatedClay
)

Undiscriminated union of footing capacity method models.

RESULTS module-attribute

RESULTS = {
    "Terzaghi1943": FootingCapacityTerzaghi1943Results,
    "Vesic1975": FootingCapacityVesic1975Results,
    "Meyerhof1978StrongSandOnSoftSaturatedClay": FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResults,
    "Meyerhof1978StrongSandOnWeakSand": FootingCapacityMeyerhof1978StrongSandOnWeakSandResults,
    "Meyerhof1978StrongSaturatedClayOnSoftSaturatedClay": FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResults,
}

FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResults pydantic-model

Bases: BaseModel

Meyerhof strong-sand-on-soft-clay footing capacity results.

Fields:

metadata pydantic-field

metadata: FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResultsMetadata

method pydantic-field

method: Literal["Meyerhof1978StrongSandOnSoftSaturatedClay"]

FootingCapacityMeyerhof1978StrongSandOnWeakSandResults pydantic-model

Bases: BaseModel

Meyerhof strong-sand-on-weak-sand footing capacity results.

Fields:

metadata pydantic-field

metadata: FootingCapacityMeyerhof1978StrongSandOnWeakSandResultsMetadata

method pydantic-field

method: Literal['Meyerhof1978StrongSandOnWeakSand']

FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResults pydantic-model

Bases: BaseModel

Meyerhof strong-clay-on-soft-clay footing capacity results.

Fields:

metadata pydantic-field

metadata: FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResultsMetadata

method pydantic-field

method: Literal[
    "Meyerhof1978StrongSaturatedClayOnSoftSaturatedClay"
]

FootingCapacityParametricResults pydantic-model

Bases: BaseModel

Parametric footing capacity results.

Fields:

data pydantic-field

data: list[FootingCapacityParametricResultsData]

FootingCapacityParametricResultsData pydantic-model

Bases: BaseModel

Parametric footing capacity result row.

Fields:

footing_embedment pydantic-field

footing_embedment: float | None = None

footing_width pydantic-field

footing_width: float | None = None

ultimate_bearing_capacity pydantic-field

ultimate_bearing_capacity: float | None = None

FootingCapacityTerzaghi1943Results pydantic-model

Bases: BaseModel

Terzaghi footing capacity results.

Fields:

metadata pydantic-field

metadata: FootingCapacityTerzaghi1943ResultsMetadata

method pydantic-field

method: Literal['Terzaghi1943']

FootingCapacityVesic1975Results pydantic-model

Bases: BaseModel

Vesic footing capacity results.

Fields:

metadata pydantic-field

metadata: FootingCapacityVesic1975ResultsMetadata

method pydantic-field

method: Literal['Vesic1975']

FootingFoundation pydantic-model

Bases: Model

Shallow footing bearing capacity (Terzaghi, Vesic, Meyerhof).

References
  • terzaghi1943theoretical
  • vesic1975bearing
  • meyerhof1978ultimate

Fields:

model pydantic-field

model: DiscriminatedFootingMethodModel

results pydantic-field

results: (
    FootingCapacityTerzaghi1943Results
    | FootingCapacityVesic1975Results
    | FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClayResults
    | FootingCapacityMeyerhof1978StrongSandOnWeakSandResults
    | FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClayResults
    | None
) = None

Calculation results

calculate

calculate() -> Self

Run the calculation and store results.

Returns:

Type Description
Self

self with results populated.

plot_geometry

plot_geometry(
    footing_thickness: float = 0.3,
    column_width: float = 0.25,
    soil_below_foundation_thickness: float = 1.0,
) -> plotly.graph_objects.Figure

Build a 3-D geometry sketch of the footing and soil.

Parameters:

Name Type Description Default
footing_thickness float

Footing thickness in meters.

0.3
column_width float

Column width in meters.

0.25
soil_below_foundation_thickness float

Soil block thickness below the footing in meters.

1.0

Returns:

Type Description
Figure

Plotly 3-D figure.

FootingFoundationMeyerhof1978StrongSandOnSoftSaturatedClay pydantic-model

Bases: FootingFoundationMixin

Meyerhof strong-sand-on-soft-clay footing capacity method.

Fields:

friction_angle pydantic-field

friction_angle: float

function_sequence class-attribute

function_sequence: FunctionSequence = (
    FunctionSequences.FootingCapacityMeyerhof1978StrongSandOnSoftSaturatedClay
)

method pydantic-field

method: Literal["Meyerhof1978StrongSandOnSoftSaturatedClay"]

thickness_top_layer pydantic-field

thickness_top_layer: float

undrained_shear_strength_bottom_layer pydantic-field

undrained_shear_strength_bottom_layer: float

FootingFoundationMeyerhof1978StrongSandOnWeakSand pydantic-model

Bases: FootingFoundationMixin

Meyerhof strong-sand-on-weak-sand footing capacity method.

Fields:

friction_angle pydantic-field

friction_angle: float

friction_angle_bottom_layer pydantic-field

friction_angle_bottom_layer: float

function_sequence class-attribute

function_sequence: FunctionSequence = (
    FunctionSequences.FootingCapacityMeyerhof1978StrongSandOnWeakSand
)

method pydantic-field

method: Literal['Meyerhof1978StrongSandOnWeakSand']

thickness_top_layer pydantic-field

thickness_top_layer: float

unit_weight_bottom_layer pydantic-field

unit_weight_bottom_layer: float

FootingFoundationMeyerhof1978StrongSaturatedClayOnSoftSaturatedClay pydantic-model

Bases: FootingFoundationMixin

Meyerhof strong-clay-on-soft-clay footing capacity method.

Fields:

function_sequence class-attribute

function_sequence: FunctionSequence = (
    FunctionSequences.FootingCapacityMeyerhof1978StrongSaturatedClayOnSoftSaturatedClay
)

method pydantic-field

method: Literal[
    "Meyerhof1978StrongSaturatedClayOnSoftSaturatedClay"
]

thickness_top_layer pydantic-field

thickness_top_layer: float

undrained_shear_strength pydantic-field

undrained_shear_strength: float

undrained_shear_strength_bottom_layer pydantic-field

undrained_shear_strength_bottom_layer: float

FootingFoundationMixin pydantic-model

Bases: BaseModel

Shared footing geometry and soil inputs for capacity methods.

Fields:

footing_embedment pydantic-field

footing_embedment: float

footing_length pydantic-field

footing_length: NullableFloat = None

footing_shape pydantic-field

footing_shape: FootingShape

footing_width pydantic-field

footing_width: float

method pydantic-field

method: str

unit_weight pydantic-field

unit_weight: float

water_table pydantic-field

water_table: NullableFloat = None

water_table_present pydantic-field

water_table_present: bool

plot_geometry

plot_geometry(
    footing_thickness: float,
    column_width: float,
    soil_below_foundation_thickness: float,
) -> plotly.graph_objects.Figure

Build a 3-D geometry sketch of the footing and soil.

Parameters:

Name Type Description Default
footing_thickness float

Footing thickness in meters.

required
column_width float

Column width in meters.

required
soil_below_foundation_thickness float

Soil block thickness below the footing in meters.

required

Returns:

Type Description
Figure

Plotly 3-D figure.

FootingFoundationParametricAnalysis pydantic-model

Bases: Model

Parametric shallow footing bearing capacity.

References
  • terzaghi1943theoretical
  • vesic1975bearing
  • meyerhof1978ultimate

Fields:

field pydantic-field

field: Literal["footing_width", "footing_embedment"] = (
    "footing_width"
)

model pydantic-field

model: DiscriminatedFootingMethodModel

range pydantic-field

range: RangeParameters

results pydantic-field

results: FootingCapacityParametricResults | None = None

Calculation results

calculate

calculate() -> Self

Run the calculation and store results.

Returns:

Type Description
Self

self with results populated.

get_results_figure

get_results_figure() -> plotly.graph_objects.Figure

Plot ultimate bearing capacity versus the swept field.

Returns:

Type Description
Figure

Plotted Plotly figure.

Raises:

Type Description
ValueError

If results have not been calculated.

FootingFoundationTerzaghi1943 pydantic-model

Bases: FootingFoundationMixin

Terzaghi footing capacity method.

Fields:

friction_angle pydantic-field

friction_angle: float

function_sequence class-attribute

function_sequence: FunctionSequence = (
    FunctionSequences.FootingCapacityTerzaghi1943
)

method pydantic-field

method: Literal['Terzaghi1943']

undrained_shear_strength pydantic-field

undrained_shear_strength: float

FootingFoundationVesic1975 pydantic-model

Bases: FootingFoundationMixin

Vesic footing capacity method.

Fields:

friction_angle pydantic-field

friction_angle: float

function_sequence class-attribute

function_sequence: FunctionSequence = (
    FunctionSequences.FootingCapacityVesic1975
)

method pydantic-field

method: Literal['Vesic1975']

undrained_shear_strength pydantic-field

undrained_shear_strength: float