Materials#

concreteproperties requires material properties to be defined for the concrete and steel components of the reinforced concrete section. Any number of different material properties can be used for a single cross-section. For example, higher strength precast sections can be topped with lower grade in-situ slabs, and high tensile steel can be used in combination with normal grade reinforcing steel.

The structural behaviour of materials is described by Stress-Strain Profiles.

Note

In concreteproperties, a positive sign is given to compressive forces, stresses and strains, while a negative sign is given to tensile forces, stresses and strains.

Material Classes#

concreteproperties ships with material objects describing the structural behaviour of both concrete and steel. The generic Material class can be used to describe the behaviour of any other material.

By default, all geometries in concreteproperties are meshed to capture strain variation across the section. However, for smaller geometries (such as reinforcement), concreteproperties can treat the area as having a constant strain with a lumped mass, which increases the performance of the analysis with almost no loss in fidelity. The meshing can be switched off by setting the attribute meshed=False.

The SteelBar class has meshing disabled by default and should be used when defining steel reinforcement. On the other hand, the Steel class is meshed by default so should be used when defining larger sections such as strucutral steel sections used in composite sections. The SteelStrand class also has meshing disabled by default and should be used when defining prestressing strands.

Material#

class concreteproperties.material.Material(name: str, density: float, stress_strain_profile: StressStrainProfile, colour: str, meshed: bool)[source]

Generic class for a concreteproperties material.

Parameters:
  • name (str) – Material name

  • density (float) – Material density (mass per unit volume)

  • stress_strain_profile (StressStrainProfile) – Material stress-strain profile

  • colour (str) – Colour of the material for rendering, see https://matplotlib.org/stable/gallery/color/named_colors.html for a list of named colours

  • meshed (bool) – If set to True, the entire material region is meshed; if set to False, the material region is treated as a lumped circular mass at its centroid

Concrete#

class concreteproperties.material.Concrete(name: str, density: float, stress_strain_profile: ConcreteServiceProfile, colour: str, ultimate_stress_strain_profile: ConcreteUltimateProfile, flexural_tensile_strength: float)[source]

Class for a concrete material.

Parameters:
Raises:
  • ValueError – If concrete stress_strain_profile is not a ConcreteServiceProfile object

  • ValueError – If concrete ultimate_stress_strain_profile is not a ConcreteUltimateProfile object

Steel#

class concreteproperties.material.Steel(name: str, density: float, stress_strain_profile: StressStrainProfile, colour: str)[source]

Class for a steel material.

This steel material has the entire region meshed to allow for strain variation across the section, e.g. structural steel profiles in composite sections.

Parameters:

SteelBar#

class concreteproperties.material.SteelBar(name: str, density: float, stress_strain_profile: StressStrainProfile, colour: str)[source]

Class for a steel bar material.

This steel material is treated as a lumped circular mass with a constant strain.

Parameters:

SteelStrand#

class concreteproperties.material.SteelStrand(name: str, density: float, stress_strain_profile: StrandProfile, colour: str, prestress_stress: float = 0)[source]

Class for a steel strand material.

This steel strand material is treated as a lumped circular mass with a constant strain.

Note

A StrandProfile must be used if using a SteelStrand object.

Note

The strand is assumed to be bonded to the concrete.

Parameters:

Stress-Strain Profiles#

concreteproperties uses stress-strain profiles to define material behaviour for both service and ultimate analyses. A Concrete object requires both a service stress-strain profile (calculation of area properties, moment-curvature analysis, elastic and service stress analysis) and an ultimate stress-strain profile (ultimate bending capacity, moment interaction diagram, biaxial bending diagram, ultimate stress analysis). All other material objects only requires one stress-strain profile which is used for both service and ultimate analyses.

Note

Stress values are interpolated from stresses and strains supplied to the profile. If the strain is outside of the range of the stress-strain profile, the stress is extrapolated based off the closest two points of the stress-strain profile.

class concreteproperties.stress_strain_profile.StressStrainProfile(strains: list[float], stresses: list[float])[source]

Abstract base class for a material stress-strain profile.

Implements a piecewise linear stress-strain profile. Positive stresses & strains are compression.

Parameters:
  • strains (list[float]) – List of strains (must be increasing or at least equal to last)

  • stresses (list[float]) – List of stresses

Raises:
  • ValueError – If length of strains is not equal to length of stresses

  • ValueError – If length of strains/stresses is not greater than 1

  • ValueError – If strains do not contain increasing or equal values

print_properties(fmt: str = '8.6e') None[source]

Prints the stress-strain profile properties to the terminal.

Parameters:

fmt (str) – Number format

plot_stress_strain(title: str = 'Stress-Strain Profile', fmt: str = 'o-', **kwargs) matplotlib.axes.Axes[source]

Plots the stress-strain profile.

Parameters:
Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

Concrete Service Stress-Strain Profiles#

Note

Unless assigned in the class constructor, the elastic_modulus of the concrete is determined by the initial compressive slope of the stress-strain profile. This elastic_modulus is used in the calculation of area properties and elastic stress analysis.

Generic Concrete Service Profile#

class concreteproperties.stress_strain_profile.ConcreteServiceProfile(strains: list[float], stresses: list[float], ultimate_strain: float)[source]

Bases: StressStrainProfile

Abstract class for a concrete service stress-strain profile.

Parameters:
  • strains (list[float]) – List of strains (must be increasing or equal to last)

  • stresses (list[float]) – List of stresses

  • ultimate_strain (float) – Concrete strain at failure

from concreteproperties import ConcreteServiceProfile

ConcreteServiceProfile(
  strains=[-5 / 35e3, -4 / 35e3, -3 / 35e3, 0, 40 / 35e3, 0.003],
  stresses=[0, 0, -3, 0, 40, 40],
  ultimate_strain=0.003,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-1.png

ConcreteServiceProfile Stress-Strain Profile#

Linear Concrete Service Profile#

class concreteproperties.stress_strain_profile.ConcreteLinear(elastic_modulus: float, ultimate_strain: float = 1)[source]

Bases: ConcreteServiceProfile

Class for a symmetric linear stress-strain profile.

Parameters:
  • elastic_modulus (float) – Elastic modulus of the stress-strain profile

  • ultimate_strain (float) – Concrete strain at failure

Warning

This profile is not intended to be used in conjunction with a moment_curvature_analysis() as the concrete can resist large tensile stresses without fracture.

from concreteproperties import ConcreteLinear

ConcreteLinear(elastic_modulus=35e3).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-2.png

ConcreteLinear Stress-Strain Profile#

Linear Concrete (No Tension) Service Profile#

class concreteproperties.stress_strain_profile.ConcreteLinearNoTension(elastic_modulus: float, ultimate_strain: float = 1, compressive_strength: float | None = None)[source]

Bases: ConcreteServiceProfile

Class for a linear stress-strain profile with no tensile strength.

Parameters:
  • elastic_modulus (float) – Elastic modulus of the stress-strain profile

  • ultimate_strain (float) – Concrete strain at failure

  • compressive_strength (float | None) – Compressive strength of the concrete

from concreteproperties import ConcreteLinearNoTension

ConcreteLinearNoTension(elastic_modulus=35e3).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-3.png

ConcreteLinearNoTension Stress-Strain Profile#

from concreteproperties import ConcreteLinearNoTension

ConcreteLinearNoTension(
  elastic_modulus=35e3,
  ultimate_strain=0.003,
  compressive_strength=40,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-4.png

ConcreteLinearNoTension Stress-Strain Profile with Compressive Strength#

Eurocode Non-Linear Concrete Service Profile#

class concreteproperties.stress_strain_profile.EurocodeNonLinear(elastic_modulus: float, ultimate_strain: float, compressive_strength: float, compressive_strain: float, tensile_strength: float, tension_softening_stiffness: float, n_points_1: int = 10, n_points_2: int = 3)[source]

Bases: ConcreteServiceProfile

Class for a non-linear stress-strain relationship to EC2.

Tension is modelled with a symmetric elastic_modulus until failure at tensile_strength, after which the tensile stress reduces according to the tension_softening_stiffness.

Parameters:
  • elastic_modulus (float) – Concrete elastic modulus (\(E_{cm}\))

  • ultimate_strain (float) – Concrete strain at failure (\(\epsilon_{cu1}\))

  • compressive_strength (float) – Concrete compressive strength (\(f_{cm}\))

  • compressive_strain (float) – Strain at which the concrete stress equals the compressive strength (\(\epsilon_{c1}\))

  • tensile_strength (float) – Concrete tensile strength

  • tension_softening_stiffness (float) – Slope of the linear tension softening branch

  • n_points_1 (int) – Number of points to discretise the curve prior to the peak stress

  • n_points_2 (int) – Number of points to discretise the curve after the peak stress

from concreteproperties import EurocodeNonLinear

EurocodeNonLinear(
    elastic_modulus=35e3,
    ultimate_strain=0.0035,
    compressive_strength=40,
    compressive_strain=0.0023,
    tensile_strength=3.5,
    tension_softening_stiffness=7e3,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-5.png

EurocodeNonLinear Stress-Strain Profile#

Modified Mander Non-Linear Unconfined & Confined Concrete Service Profile#

class concreteproperties.stress_strain_profile.ModifiedMander(elastic_modulus: float, compressive_strength: float, tensile_strength: float, sect_type: str | None = None, conc_confined: bool = False, conc_tension: bool = False, conc_spalling: bool = False, eps_co: float = 0.002, eps_c_max_unconfined: float = 0.004, eps_sp: float = 0.006, d: float | None = None, b: float | None = None, long_reinf_area: float | None = None, w_dash: list[float] | None = None, cvr: float | None = None, trans_spacing: float | None = None, trans_d_b: float | None = None, trans_num_d: int | None = None, trans_num_b: int | None = None, trans_f_y: float | None = None, eps_su: float | None = None, n_points: int = 50, n_steel_strain: float = 0.6, n_confinement: float = 0.75)[source]

Bases: ConcreteServiceProfile

Modified Mander stress-strain profile.

Class for a non-linear stress-strain relationship based on the Mander stress-strain model for confined & unconfined concrete for a rectangular cross section. Intended for use with moment-curvature analyses with rectangular or circular cross sections.

Refer to references [1] [2] [3] for further information on the Mander stress-strain models for confined and unconfined concrete.

This stress strain relationship has been specifically modified for use as per the modified implementation documented within the NZSEE C5 assessment guidelines. However input parameters can also be customised to suit other implementations if desired.

Tip

Optional input variables are only required for defining a confined concrete stress-strain relationship. Note if any variables are missed when attempting to define a confined concrete stress-strain relationship (using conc_confined=True), then the material will default to being defined as an unconfined concrete stress-strain relationship with a warning given.

Modifications to Mander confined concrete model:

The original formulation of the expression for confined concrete presented by Mander et al. [1] can predict high levels of confined concrete strain dependant on the assumed value for the ultimate steel strain for the transverse reinforcement. The modified expression given the NZSEE C5 assesment guidelines [3] provides a correction and is directly implemented in the ModifiedMander material class.

These corrections to avoid overestimating the confined concrete limiting strain consist of three allowances:

  • Modifying the maximum steel strain by a factor of 0.6:

    • \(\varepsilon_{s,max}= 0.6\varepsilon_{su} \leq 0.06\)

    • Note this 0.6 modifier can be altered via the n_steel_strain parameter.

    • Note the steel material used for reinforcement is also required to be defined with this same limiting fracture strain for a moment-curvature analysis.

  • Modifying the volumetric ratio of confinement reinforcement by a factor of 0.75. i.e.:

    • For rectangular sections

      • \(\displaystyle{\rho_{st}=\frac{0.75}{s}\left[\frac{A_{v,d}} {b_{core}}+\frac{A_{v,b}}{d_{core}}\right]}\)

    • For circular sections

      • \(\displaystyle{\rho_{st}=\frac{0.75}{s}\frac{4A_v}{d_s}}\)

    • Note this 0.75 modifier can be altered via the n_confinement parameter.

  • For confined concrete utilising a maximum concrete compressive strain of:

    • \(\displaystyle{\varepsilon_{c,max}=0.004+\frac{0.6\rho_{st}f_{yh} \varepsilon_{su}}{f'_{cc}}\leq0.05}\)

    • Note that the 0.6 factor applied to the ultimate tensile failure strain can be modified as noted above.

(Source code, png, hires.png, pdf)

../_images/mander_unconfined_plot_mander_unconfined_plot.png

ModifiedMander Parameters for Unconfined Concrete#

(Source code, png, hires.png, pdf)

../_images/mander_confined_plot_mander_confined_plot.png

ModifiedMander Parameters for Confined Concrete#

Parameters:
  • elastic_modulus (float) – Concrete elastic modulus (\(E_c\))

  • compressive_strength (float) – Concrete compressive strength (\(f'_c\))

  • tensile_strength (float) – Concrete tensile strength (\(f_t\))

  • sect_type (str | None) –

    The type of concrete cross section for which to create a confined concrete stress-strain relationship for:

    • rect = Rectangular section with closed stirrup/tie transverse reinforcement

    • circ_hoop = Circular section with closed hoop transverse reinforcement

    • circ_spiral = Circular section with spiral transverse reinforcement

  • conc_confined (bool) – True to return a confined concrete stress-strain relationship based on provided reinforcing parameters, False to return an unconfined concrete stress-strain relationship

  • conc_tension (bool) – True to include tension in the concrete within the stress-strain relationship (up to the tensile strength of the concrete is reached), False to not consider any tension behaviour in the concrete

  • conc_spalling (bool) – True to consider the spalling effect for unconfined concrete, False to not consider the spalling branch and truncate the unconfined concrete curve at min(\(2 \varepsilon_{co},\varepsilon_{c,max}\))

  • eps_co (float) – Strain at which the maximum concrete stress is obtained for an unconfined concrete material (\(\varepsilon_{co}\))

  • eps_c_max_unconfined (float) – Maximum strain that is able to be supported within unconfined concrete (\(\varepsilon_{c,max}\))

  • eps_sp (float) – Spalling strain, the strain at which the stress returns to zero for unconfined concrete (\(\varepsilon_{sp}\))

  • d (float | None) – Depth of a rectangular concrete cross section, or diameter of circular concrete cross section (\(d\))

  • b (float | None) – Breadth of a rectangular concrete cross section (\(b\))

  • long_reinf_area (float | None) – Total area of the longitudinal reinforcement in the concrete cross section (\(A_{st}\))

  • w_dash (list[float] | None) – List of clear spacing between longitudinal reinforcement around the full perimeter of a rectangular concrete cross section (\(w'\))

  • cvr (float | None) – Concrete cover (to confining reinforcement)

  • trans_spacing (float | None) – Spacing of transverse confining reinforcement (\(s\))

  • trans_d_b (float | None) – Diameter of the transverse confining reinforcement (\(d_b\))

  • trans_num_d (int | None) – Number of legs/cross links parallel to the depth of a rectangular concrete cross section

  • trans_num_b (int | None) – Number of legs/cross links parallel to the breadth of a rectangular concrete cross section

  • trans_f_y (float | None) – Yield strength of the transverse confining reinforcement (\(f_{yh}\))

  • eps_su (float | None) – Strain at the ultimate tensile strength of the reinforcement (\(\varepsilon_{su}\))

  • n_points (int) – Number of points to discretise the compression part of the stress-strain curve between \(\varepsilon_{c}=0\) & \(\varepsilon_{c} =2\varepsilon_{co}\) for an unconfined concrete, or between \(\varepsilon_{c}=0\) & \(\varepsilon_{c}=\varepsilon_{cu}\) for a confined concrete

  • n_steel_strain (float) – Modifier for maximum steel reinforcement strain. Steel reinforcement material within the concrete cross section should also be defined with the same limit for the fracture strain

  • n_confinement (float) – Modifier for volumetric ratio of confinement reinforcement

Raises:

ValueError – If specified section type is not rect, circ_hoop or circ_spiral

from concreteproperties import ModifiedMander

ModifiedMander(elastic_modulus=30e3,
      compressive_strength=30,
      tensile_strength=4.5,
      sect_type="rect",
      conc_tension=True,
      conc_spalling=True,
      n_points=25
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-6.png

ModifiedMander NonLinear Stress-Strain Profile for Unconfined Concrete#

from concreteproperties import ModifiedMander
ModifiedMander(
      elastic_modulus=30e3,
      compressive_strength=30,
      tensile_strength=4.5,
      sect_type="rect",
      conc_confined=True,
      conc_tension=True,
      d=800,
      b=500,
      long_reinf_area=12 * 314,
      w_dash=[150] * 12,
      cvr=30 + 10,
      trans_spacing=125,
      trans_d_b=10,
      trans_num_d=4,
      trans_num_b=4,
      trans_f_y=500,
      eps_su=0.15,
      n_points=25,
  ).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-7.png

ModifiedMander NonLinear Stress-Strain Profile for Confined Concrete#

Concrete Ultimate Stress-Strain Profiles#

Note

Unless assigned in the class constructor, the ultimate_strain of the concrete is taken as the largest compressive strain in the stress-strain profile. This ultimate_strain defines the curvature and strain profile used in ultimate analyses.

Warning

concreteproperties currently only supports a single unique ultimate_strain to be used for a given ConcreteSection. While multiple concrete materials, with differing stress-strain profiles, can be used within a given ConcreteSection, the ultimate analysis will use the smallest value of the ultimate_strain amongst the various concrete materials to define the strain profile at ultimate.

Generic Concrete Ultimate Profile#

class concreteproperties.stress_strain_profile.ConcreteUltimateProfile(strains: list[float], stresses: list[float], compressive_strength: float)[source]

Bases: StressStrainProfile

Abstract class for a concrete ultimate stress-strain profile.

Parameters:
  • strains (list[float]) – List of strains (must be increasing or at least equal to last)

  • stresses (list[float]) – List of stresses

  • compressive_strength (float) – Concrete compressive strength

from concreteproperties import ConcreteUltimateProfile

ConcreteUltimateProfile(
  strains=[-20 / 30e3, 0, 20 / 30e3, 30 / 25e3, 40 / 20e3, 0.003],
  stresses=[0, 0, 20, 30, 40, 40],
  compressive_strength=32,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-8.png

ConcreteUltimateProfile Stress-Strain Profile#

Rectangular Stress Block#

class concreteproperties.stress_strain_profile.RectangularStressBlock(compressive_strength: float, alpha: float, gamma: float, ultimate_strain: float)[source]

Bases: ConcreteUltimateProfile

Class for a rectangular stress block.

Parameters:
  • compressive_strength (float) – Concrete compressive strength

  • alpha (float) – Factor that modifies the concrete compressive strength

  • gamma (float) – Factor that modifies the depth of the stress block

  • ultimate_strain (float) – Concrete strain at failure

from concreteproperties import RectangularStressBlock

RectangularStressBlock(
    compressive_strength=40,
    alpha=0.85,
    gamma=0.77,
    ultimate_strain=0.003,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-9.png

RectangularStressBlock Stress-Strain Profile#

Bilinear Ultimate Profile#

class concreteproperties.stress_strain_profile.BilinearStressStrain(compressive_strength: float, compressive_strain: float, ultimate_strain: float)[source]

Bases: ConcreteUltimateProfile

Class for a bilinear stress-strain relationship.

Parameters:
  • compressive_strength (float) – Concrete compressive strength

  • compressive_strain (float) – Strain at which the concrete stress equals the compressive strength

  • ultimate_strain (float) – Concrete strain at failure

from concreteproperties import BilinearStressStrain

BilinearStressStrain(
    compressive_strength=40,
    compressive_strain=0.00175,
    ultimate_strain=0.0035,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-10.png

BilinearStressStrain Stress-Strain Profile#

Eurocode Parabolic Ultimate Profile#

class concreteproperties.stress_strain_profile.EurocodeParabolicUltimate(compressive_strength: float, compressive_strain: float, ultimate_strain: float, n: float, n_points: int = 10)[source]

Bases: ConcreteUltimateProfile

Class for an ultimate parabolic stress-strain relationship to EC2.

Parameters:
  • compressive_strength (float) – Concrete compressive strength

  • compressive_strain (float) – Strain at which the concrete stress equals the compressive strength

  • ultimate_strain (float) – Concrete strain at failure

  • n (float) – Parabolic curve exponent

  • n_points (int) – Number of points to discretise the parabolic segment of the curve

from concreteproperties import EurocodeParabolicUltimate

EurocodeParabolicUltimate(
    compressive_strength=40,
    compressive_strain=0.00175,
    ultimate_strain=0.0035,
    n=2,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-11.png

EurocodeParabolicUltimate Stress-Strain Profile#

Steel Stress-Strain Profiles#

Generic Steel Profile#

class concreteproperties.stress_strain_profile.SteelProfile(strains: list[float], stresses: list[float], yield_strength: float, elastic_modulus: float, fracture_strain: float)[source]

Bases: StressStrainProfile

Abstract class for a steel stress-strain profile.

Parameters:
  • strains (list[float]) – List of strains (must be increasing or at least equal to last)

  • stresses (list[float]) – List of stresses

  • yield_strength (float) – Steel yield strength

  • elastic_modulus (float) – Steel elastic modulus

  • fracture_strain (float) – Steel fracture strain

from concreteproperties import SteelProfile

SteelProfile(
  strains=[-0.05, -0.03, -0.02, -500 / 200e3, 0, 500 / 200e3, 0.02, 0.03, 0.05],
  stresses=[-600, -600, -500, -500, 0, 500, 500, 600, 600],
  yield_strength=500,
  elastic_modulus=200e3,
  fracture_strain=0.05,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-12.png

SteelProfile Stress-Strain Profile#

Elastic-Plastic Steel Profile#

class concreteproperties.stress_strain_profile.SteelElasticPlastic(yield_strength: float, elastic_modulus: float, fracture_strain: float)[source]

Bases: SteelProfile

Class for a perfectly elastic-plastic steel stress-strain profile.

Parameters:
  • yield_strength (float) – Steel yield strength

  • elastic_modulus (float) – Steel elastic modulus

  • fracture_strain (float) – Steel fracture strain

from concreteproperties import SteelElasticPlastic

SteelElasticPlastic(
  yield_strength=500,
  elastic_modulus=200e3,
  fracture_strain=0.05,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-13.png

SteelElasticPlastic Stress-Strain Profile#

Elastic-Plastic Hardening Steel Profile#

class concreteproperties.stress_strain_profile.SteelHardening(yield_strength: float, elastic_modulus: float, fracture_strain: float, ultimate_strength: float)[source]

Bases: SteelProfile

Class for a steel stress-strain profile with strain hardening.

Parameters:
  • yield_strength (float) – Steel yield strength

  • elastic_modulus (float) – Steel elastic modulus

  • fracture_strain (float) – Steel fracture strain

  • ultimate_strength (float) – Steel ultimate strength

from concreteproperties import SteelHardening

SteelHardening(
  yield_strength=500,
  elastic_modulus=200e3,
  fracture_strain=0.05,
  ultimate_strength=600,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-14.png

SteelHardening Stress-Strain Profile#

Strand Stress-Strain Profiles#

Generic Strand Profile#

class concreteproperties.stress_strain_profile.StrandProfile(strains: list[float], stresses: list[float], yield_strength: float)[source]

Bases: StressStrainProfile

Abstract class for a steel strand stress-strain profile.

Implements a piecewise linear stress-strain profile. Positive stresses & strains are compression.

Parameters:
  • strains (list[float]) – List of strains (must be increasing or at least equal to last)

  • stresses (list[float]) – List of stresses

  • yield_strength (float) – Strand yield strength

from concreteproperties import StrandProfile

StrandProfile(
  strains=[-0.03, -0.01, -1400 / 195e3, 0, 1400 / 195e3, 0.01, 0.03],
  stresses=[-1800, -1600, -1400, 0, 1400, 1600, 1800],
  yield_strength=500,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-15.png

StrandProfile Stress-Strain Profile#

Elastic-Plastic Hardening Strand Profile#

class concreteproperties.stress_strain_profile.StrandHardening(yield_strength: float, elastic_modulus: float, fracture_strain: float, breaking_strength: float)[source]

Bases: StrandProfile

Class for a strand stress-strain profile with strain hardening.

Parameters:
  • yield_strength (float) – Strand yield strength

  • elastic_modulus (float) – Strand elastic modulus

  • fracture_strain (float) – Strand fracture strain

  • breaking_strength (float) – Strand breaking strength

from concreteproperties import StrandHardening

StrandHardening(
  yield_strength=1500,
  elastic_modulus=195e3,
  fracture_strain=0.035,
  breaking_strength=1830,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-16.png

StrandHardening Stress-Strain Profile#

PCI Journal (1992) Strand Profile#

class concreteproperties.stress_strain_profile.StrandPCI1992(yield_strength: float, elastic_modulus: float, fracture_strain: float, breaking_strength: float, bilinear_yield_ratio: float = 1.04, strain_cps: list[float] = <factory>, n_points: list[int] = <factory>)[source]

Bases: StrandProfile

Class for a PCI Strand (1992).

Class for a strand stress-strain profile by R. Devalapura and M. Tadros from the March-April issue of the PCI Journal.

Parameters:
  • yield_strength (float) – Strand yield strength

  • elastic_modulus (float) – Strand elastic modulus

  • fracture_strain (float) – Strand fracture strain

  • breaking_strength (float) – Strand breaking strength

  • bilinear_yield_ratio (float) – Ratio between the stress at the intersection of a bilinear profile, and the yield strength

  • strain_cps (list[float]) – Strain control points, generates the following strain segments: [0, strain_cps[0], strain_cps[1], fracture_strain]. Length must be equal to 2.

  • n_points (list[int]) – Number of points to discretise within each strain segment. Length must be equal to 3.

from concreteproperties import StrandPCI1992

StrandPCI1992(
  yield_strength=1500,
  elastic_modulus=195e3,
  fracture_strain=0.035,
  breaking_strength=1830,
).plot_stress_strain()

(Source code, png, hires.png, pdf)

../_images/materials-17.png

StrandPCI1992 Stress-Strain Profile#