civilpy.structural.aashto package

Submodules

civilpy.structural.aashto.bearings module

class civilpy.structural.aashto.bearings.BearingSuitability(type='rectangular', movement='fixed', axis='x')[source]

Bases: object

A class to assist determining suitability of various types of bearings for various types of loading Situations. The class is intended to be used as follows.

As Reference:

bearing_table = BearingSuitability().table print(bearing_table)

As Code:
if BearingSuitability(type, movement, axis):

perform_action()

else:

continue

__init__(type='rectangular', movement='fixed', axis='x')[source]

Initialise a BearingSuitability checker and build the lookup table.

Parameters:
  • type (str) – Bearing type descriptor (e.g. 'rectangular').

  • movement (str) – Expected movement type ('fixed' or 'expansion').

  • axis (str) – Principal movement axis ('x' longitudinal or 'y' transverse).

get_table()[source]

Build and return the AASHTO bearing suitability reference table.

Suitability ratings are derived from AASHTO LRFD Bridge Design Specifications, Table 14.6.2-1 (Bearing Suitability).

The table maps movement/rotation/load categories to bearing types with suitability codes: 'S' = suitable, 'U' = unsuitable, 'R' = requires special consideration, 'L' = suitable for limited applications.

Returns:

Rows are bearing types; columns are movement, rotation, and load categories.

Return type:

pandas.DataFrame

class civilpy.structural.aashto.bearings.MethodABearing(width, length, durometer, internal_t, external_t, steel_t, plys, span, expansion_length, loads, max_dl_delta, max_ll_delta, max_ll_loc, deck_slope, plate_bev, edge_cover=0.25, type='rectangular', holes=False, steel_yield_strength=60, shear_modulus=0.095, exp_coeff=6e-06, temp_min=-30, temp_max=120)[source]

Bases: object

Represents a Method A designed elastomeric bearing pad used in structural applications.

The MethodABearing class is utilized to evaluate the compliance of an elastomeric bearing pad structured to Method A design checks. The assessment involves evaluating critical parameters such as internal and external layer thickness, shape factors, and edge cover, based on defined design specifications. Various checks are performed to ensure the pad satisfies these structural criteria.

width

The width of the bearing pad in inches.

Type:

float

length

The length of the bearing pad in inches.

Type:

float

durometer

The durometer hardness value of the elastomeric material.

Type:

float

internal_t

The thickness of the internal elastomeric layers in inches.

Type:

float

external_t

The thickness of the external elastomeric layers in inches.

Type:

float

steel_t

The thickness of the steel reinforcing shims in inches.

Type:

float

plys

The number of steel layers in the bearing pad.

Type:

int

span

The span of the bridge section from bearing to bearing in ft.

Type:

float

expansion_length

The expansion length of the bridge section (fixed bearing to fixed) in ft.

Type:

float

loads

A dictionary containing the loads applied to the bearing pad. - format to be updated

Type:

dict

max_dl_delta

The maximum deflection of the dead load in inches (from software/analysis).

Type:

float

max_ll_delta

The maximum deflection of the live load in inches (from software/analysis).

Type:

float

max_ll_loc

The location of the maximum live load in feet (from software/analysis).

Type:

float

deck_slope

The slope of the deck in percent grade.

Type:

float

plate_bev

The plate bevel in percent.

Type:

float

edge_cover

The edge cover dimension in inches, default is 0.25 inches.

Type:

float

checks

A dictionary storing the results of various design validation checks.

Type:

dict

internal_shape_factor

The shape factor of the internal elastomeric layers.

Type:

float

type

The shape type of the bearing pad, default is ‘rectangular’, alternative is ‘circular’.

Type:

str

holes

Indicates if the bearing pad has holes, default is False.

Type:

bool

steel_yield_strength

The yield strength of the steel reinforcing shims in ksi (defaults to 60).

Type:

float

shear_modulus

The shear modulus of the elastomeric material in ksi (defaults to 0.095).

Type:

float

exp_coeff

The expansion coefficient of the elastomeric material in 1/in (defaults to 0.000006).

Type:

float

temp_min

The minimum temperature of the bearing pad in degrees Fahrenheit (defaults to 15).

Type:

float

temp_max

The maximum temperature of the bearing pad in degrees Fahrenheit (defaults to 95).

Type:

float

__init__(width, length, durometer, internal_t, external_t, steel_t, plys, span, expansion_length, loads, max_dl_delta, max_ll_delta, max_ll_loc, deck_slope, plate_bev, edge_cover=0.25, type='rectangular', holes=False, steel_yield_strength=60, shear_modulus=0.095, exp_coeff=6e-06, temp_min=-30, temp_max=120)[source]

Initialize a Method A elastomeric bearing and compute derived geometry.

Parameters:
  • width (float) – Bearing pad width, in.

  • length (float) – Bearing pad length, in.

  • durometer (float) – Elastomer hardness (Shore A durometer value).

  • internal_t (float) – Internal elastomer layer thickness, in.

  • external_t (float) – External (cover) elastomer layer thickness, in.

  • steel_t (float) – Steel reinforcing shim thickness, in.

  • plys (int) – Number of steel reinforcing layers.

  • span (float) – Span length from bearing to bearing, ft.

  • expansion_length (float) – Length from fixed bearing to expansion bearing, ft.

  • loads (dict) – Applied loads dictionary (format defined per project use).

  • max_dl_delta (float) – Maximum dead load deflection from analysis, in.

  • max_ll_delta (float) – Maximum live load deflection from analysis, in.

  • max_ll_loc (float) – Location of maximum live load, ft from bearing.

  • deck_slope (float) – Deck slope, percent grade.

  • plate_bev (float) – Sole plate bevel, percent.

  • edge_cover (float) – Edge cover dimension, in. Defaults to 0.25.

  • type (str) – Bearing geometry — 'rectangular' (default) or 'circular'.

  • holes (bool) – True if the bearing pad has holes. Defaults to False.

  • steel_yield_strength (float) – Shim yield strength, ksi. Defaults to 60.

  • shear_modulus (float) – Elastomer shear modulus, ksi. Defaults to 0.095.

  • exp_coeff (float) – Thermal expansion coefficient, 1/°F. Defaults to 0.000006.

  • temp_min (float) – Minimum design temperature, °F. Defaults to -30.

  • temp_max (float) – Maximum design temperature, °F. Defaults to 120.

check_edge_cover()[source]

Verify steel laminate edge cover meets the 1/4-inch minimum.

Per AASHTO 14.7.6.1, edge cover must be at least 0.25 inches. Updates self.checks['Steel Laminate Edge Cover Check'] with 1 (pass) or 0 (fail).

check_layer_thickness()[source]

Verify external elastomer layer thickness constraints.

Per AASHTO 14.7.6.1, the external layer must not exceed 5/16 inch and must not exceed 70 % of the internal layer thickness. Updates self.checks with 1 (pass) or 0 (fail) for each sub-check.

get_deflections()[source]

Calculate service compressive stress values from applied loads.

Divides live and total dead loads by the bearing plan area to obtain bearing pressures, stored as self.sigma_l (live load stress, ksi) and self.sigma_s (dead load stress, ksi).

get_shape_factors(thickness)[source]

Calculate the AASHTO shape factor S for a single elastomer layer.

Per AASHTO 14.7.5.1, S = LW / [2t_ri(L + W)].

Parameters:

thickness (float) – Thickness of a single internal elastomer layer t_ri (inches).

Returns:

Dimensionless shape factor S.

Return type:

float

run_checks()[source]

Execute all AASHTO Method A elastomeric bearing design checks.

Runs checks #2 through #19 per AASHTO LRFD 14.7.6. Results are stored in self.checks as 1 (pass) or 0 (fail). Failed checks also print a descriptive message.

Checks performed include service stress limits, deflection limits, shear deformation, combined strain, stability, and reinforcement checks.

civilpy.structural.aashto.bearings.get_bearing_strain(stress, shape_factor, hardness)[source]

civilpy.structural.aashto.durometer module

civilpy.structural.aashto.durometer.find_closest_key(user_input, durometer_values, category)[source]

Return the strain-factor table key nearest to user_input.

AASHTO shape-factor tables are defined at discrete values (3, 4, 5, 6, 9, 12). When a designer provides an intermediate shape factor this function finds the nearest tabulated key so the correct strain factor can be looked up.

Parameters:
  • user_input – Shape factor value to match (numeric or string).

  • durometer_values (dict) – Nested dict keyed by durometer → shape factor → strain factor (e.g. durometer_strain_factors).

  • category (str) – Durometer hardness category key (e.g. "50").

Returns:

The integer key in durometer_values[category] closest to user_input, returned as a string.

Return type:

str

civilpy.structural.aashto.durometer.get_strain_from_stress(stress, durometer, shape_factor)[source]

Calculate elastomer compressive strain from applied stress.

Inverts the AASHTO power-law relationship stress = A * strain^1.3 (where A is the durometer/shape-factor dependent coefficient) to solve for strain given a known stress. AASHTO tables list strain as the independent variable, so this inversion is necessary for stress-driven design workflows.

Parameters:
  • stress (float) – Applied compressive stress on the bearing (ksi).

  • durometer (int) – Rubber hardness (50 or 60 Shore A).

  • shape_factor (float) – Bearing shape factor S = LW / [2t(L+W)].

Returns:

Compressive strain (dimensionless) corresponding to stress.

Return type:

float

civilpy.structural.aashto.load_definitions module

civilpy.structural.aashto.vehicles module

class civilpy.structural.aashto.vehicles.HL93Load[source]

Bases: object

AASHTO HL-93 design vehicle load per AASHTO LRFD Bridge Design Specifications.

The HL-93 live load consists of a design truck (or tandem) combined with a design lane load. This class represents the design truck component: a 3-axle vehicle with 8-kip front axle and two 32-kip rear axles.

__init__()[source]

Initialize the HL-93 design truck with standard AASHTO axle loads and spacings.

Axle loads (kips) and reference spacings (ft) are per AASHTO LRFD Table 3.6.1.2.2-1. The rear axle spacing varies between 14 ft and 30 ft; the governing spacing for a given span is the one that maximizes the load effect.

axels

Axle configuration with keys 'spacing', 'lane_load_klf', 1, 2, 3. Each numbered key maps to a dict with 'load' (kips) and 'dist' (ft from axle 1, or list of allowable spacings for axle 3).

Type:

dict

class civilpy.structural.aashto.vehicles.HS20Load[source]

Bases: object

AASHTO HS-20-44 design truck per AASHTO Standard Specifications for Highway Bridges, 17th Ed., Article 3.7.

HS-20 predates LRFD and is used for load rating of older structures and for permit routing. The axle pattern (8-32-32 kip) is identical to the HL-93 design truck, but the rear axle spacing is fixed at 14 ft (not variable), and the lane load uses separate concentrated loads for moment vs. shear.

static impact_factor(span_length_ft: float) float[source]

Return the HS-20 impact factor for the given span length (ft).

total_axle_load_kip() float[source]

Sum of all axle loads in kips.

class civilpy.structural.aashto.vehicles.PedestrianLoad(span_length_ft: float = 25.0, tributary_width_ft: float = 6.0)[source]

Bases: object

Pedestrian live load per AASHTO LRFD Guide Specifications for Design of Pedestrian Bridges, 2nd Ed. (2009), Article 4.1.

The basic uniform load is 90 psf. For bridges with loaded lengths greater than 25 ft, a reduced load may be used per the formula below, with a minimum of 20 psf.

Reduction formula (L > 25 ft):

w = max(20, min(90, 240 / L + 20)) [psf]

where L is the loaded span length in feet.

property uniform_load_klf: float

Design pedestrian load in kip/ft over the tributary width.

property uniform_load_psf: float

Design pedestrian load in psf for the configured span length.

Module contents