concreteproperties

repository·master·Indexed 42 days ago

https://github.com/robbievanleeuwen/concrete-properties

A Python package for calculating the cross-section properties of arbitrary reinforced concrete sections. Version 0.8.0 supports gross, cracked, and ultimate property calculations, moment-curvature and interaction analyses, and the generation of stress plots and biaxial bending diagrams.

Tokens
44.4K
Snippets
142
Records
199
Agent score
53%

What's inside concreteproperties

  1. Overview of concreteproperties features and analysis types

    master

    The concreteproperties library provides computational tools for structural analysis of reinforced and composite concrete elements. It supports the following analysis types:

    • Reinforced Concrete
    • Steel-Concrete Composite
    • Prestressed Concrete

    Key capabilities include material modeling (concrete, steel, and strand), calculation of gross section properties, serviceability analysis (cracking, moment-curvature), ultimate strength analysis (bending capacity, squash load, M-N curves), and stress analysis for both uncracked and cracked states. The library includes design code modules for AS3600 and NZS3101 & NZSEE C5 Assessment Guidelines.

  2. Overview of concreteproperties capabilities

    master

    concreteproperties is a Python package designed to calculate the section properties of arbitrary reinforced concrete sections.

    Key capabilities include:

    • Calculating gross, cracked, and ultimate properties.
    • Performing moment-curvature analyses.
    • Generating moment interaction and biaxial bending diagrams.
    • Generating stress plots.
  3. Explore the concreteproperties API modules

    master

    The concreteproperties library is organized into several functional modules. Depending on your task, you will interact with different parts of the API:

    • concreteproperties.pre: Likely contains preprocessing or setup utilities.
    • concreteproperties.material: Defines material properties (e.g., concrete, steel).
    • concreteproperties.stress_strain_profile: Manages stress-strain relationships for materials.
    • concreteproperties.concrete_section: Defines standard reinforced concrete sections.
    • concreteproperties.prestressed_section: Defines prestressed concrete sections.
    • concreteproperties.analysis_section: Provides tools for analyzing structural sections.
    • concreteproperties.results: Handles the output and data structures from analyses.
    • concreteproperties.design_codes: Contains implementations of specific structural design codes.
    • concreteproperties.post: Likely contains post-processing or reporting utilities.
    • concreteproperties.utils: General utility functions.
  4. Steel Stress-Strain Profiles

    master

    Steel profiles are used to model the behavior of reinforcement. Unlike concrete, a single profile is used for both service and ultimate analyses.

    Available Profiles:

    • SteelProfile: A generic profile using manual strains and stresses arrays. Requires yield_strength, elastic_modulus, and fracture_strain.
    • SteelElasticPlastic: A standard elastic-plastic model.
    • SteelHardening: An elastic-plastic model that includes strain hardening (requires ultimate_strength).
    from concreteproperties import SteelHardening
    
    # Example of an elastic-plastic hardening steel profile
    profile = SteelHardening(
        yield_strength=500,
        elastic_modulus=200e3,
        fracture_strain=0.05,
        ultimate_strength=600,
    )
    profile.plot_stress_strain()
  5. Perform service and ultimate limit state analysis

    master

    The library provides tools for both serviceability and ultimate strength assessments:

    Service Analysis

    • Cracking moment calculation.
    • Cracked area properties.
    • Moment-curvature diagrams.

    Ultimate Analysis

    • Ultimate bending capacity.
    • Squash load and Tensile load.
    • Moment interaction diagrams: Including M-N curves and Biaxial bending curves.

    Stress Analysis

    • Calculation of Uncracked, Cracked, Service, and Ultimate stresses.
  6. Understand the mechanical assumptions in concreteproperties

    master

    The concreteproperties library operates under several core mechanical assumptions that affect how cross-sections and materials are analyzed:

    General Assumptions

    • Euler-Bernoulli Beam Theory: Plane sections remain plane, implying a linear strain profile throughout the cross-section.
    • Perfect Bond: For a given depth, the strain in the reinforcement is equal to the strain in the concrete.
    • Unmeshed Materials: Materials with meshed=False (such as SteelBar) are characterized by a constant strain at their geometric centroid.
    • Stress-Strain Interpolation: Stresses are determined via linear interpolation from the provided stress-strain profile. If strains fall outside the profile range, linear extrapolation is used.

    Analysis-Specific Assumptions

    • Cracked Analysis: Concrete is assumed to have zero tensile strength.
    • Ultimate Analysis:
      • Concrete tensile strength is assumed to be zero.
      • The maximum strain at the extreme concrete compression fibre reaches a maximum limiting compressive strain.
      • No geometric instabilities (like buckling) are assumed to occur before the cross-section reaches ultimate strength.
      • Concrete stress-strain relationships can be rectangular, trapezoidal, bilinear, parabolic, or other arbitrary shapes.
    • Prestressed Analysis:
      • All prestressing strands are assumed to be fully bonded to the concrete.
      • Internal actions from prestressing forces are automatically included in all analyses.

    Moment Reference Conventions

    • Service and Ultimate Analyses: Moments (moment-curvature, ultimate bending, moment interaction, biaxial bending, service stress, ultimate stress) are calculated about, or assumed to be about, the gross centroid (no material properties applied) unless specified otherwise during the initialization of ConcreteSection.
    • Elastic Stress Analysis (Cracked and Uncracked): Moment inputs are assumed to be taken about the geometric centroid (material properties applied).
  7. How stress-strain profiles define material behavior

    master

    The concreteproperties library uses stress-strain profiles to model how materials behave under load.

    For Concrete objects, you must provide two distinct profiles:

    1. Service profile: Used for area properties, moment-curvature analysis, and elastic/service stress analysis.
    2. Ultimate profile: Used for ultimate bending capacity, moment interaction diagrams, biaxial bending diagrams, and ultimate stress analysis.

    All other material types (like steel or strands) only require a single profile, which is used for both service and ultimate analyses.

    Interpolation and Extrapolation:

    • Stress values are interpolated from the supplied points.
    • If a requested strain is outside the profile's range, the stress is extrapolated using the two closest points in the profile.
  8. Choose the correct material class for your components

    master

    The library provides specialized classes for different structural components. Choosing the correct class ensures proper meshing behavior and performance:

    • Concrete: Used for concrete components. Meshing is enabled by default to capture strain variation.
    • Steel: Used for large structural steel sections (e.g., in composite sections). Meshing is enabled by default.
    • SteelBar: Used for reinforcement. Meshing is disabled by default (treats area as constant strain with lumped mass) to increase analysis performance.
    • SteelStrand: Used for prestressing strands. Meshing is disabled by default.
    • Material: A generic class that can be used to describe the behavior of any other material type.

    Note on Meshing: You can manually toggle meshing for any geometry by setting the meshed=False attribute.

  9. Strand Stress-Strain Profiles

    master

    Strand profiles model the behavior of prestressing strands.

    Available Profiles:

    • StrandProfile: A generic profile using manual strains and stresses arrays.
    • StrandHardening: An elastic-plastic hardening model for strands.
    • StrandPCI1992: A specific strand profile based on the PCI Journal (1992).
    from concreteproperties import StrandPCI1992
    
    # Example of a PCI 1992 strand profile
    profile = StrandPCI1992(
        yield_strength=1500,
        elastic_modulus=195e3,
        fracture_strain=0.035,
        breaking_strength=1830,
    )
    profile.plot_stress_strain()