Source code for streng.codes.eurocodes.ec2.raw.ch3.concrete.stress_strain

"""
Concrete stress-strain relation functions sss

    .. uml::

        class stress_strain  <<(M,#FF7700)>> {
        .. functions ..
        + n(fck)
        + εc1(fck)
        + εc2(fck)
        + εc3(fck)
        + εcu1(fck)
        + εcu2(fck)
        + εcu3(fck)
        + stress_strain.σc_bilin(fck, αcc, γc, εc)
        + stress_strain.σc_design(fck, αcc, γc, εc)
        + stress_strain.σc_nl(fck, εc)
        }

"""

from . import strength
from . import elastic_deformation


[docs]def εc1(fck): """ Compressive strain in the concrete at the peak stress (‰) Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days Returns: float: Given using the expression: .. math:: ε_{c1} = min(0.7\cdot f_{cm}^{0.31}, 2.8) """ fcm = strength.fcm(fck) return min(2.8, 0.7*fcm**0.31)
[docs]def εc2(fck): """ The strain at reaching the maximum strength (‰) Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days Returns: float: Given using the expressions: .. math:: \\begin{eqnarray} ε_{c2} & = & 2.0 & for & f_{ck} \le 50MPa \\\\ ε_{c2} & = & 2.0 + 0.085(f_{ck}-50)^{0.53} & for & f_{ck} \ge 50MPa \\end{eqnarray} """ if fck<50: _εc2 = 2.0 else: _εc2 = 2.0+0.085*(fck - 50)**0.53 return _εc2
[docs]def εc3(fck): """ (‰) Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days Returns: float: Given using the expressions: .. math:: \\begin{eqnarray} ε_{c3} & = & 1.75 & for & f_{ck} \le 50MPa \\\\ ε_{c3} & = & 1.75 + 0.55(f_{ck}-50)/40 & for & f_{ck} \ge 50MPa \\end{eqnarray} """ if fck<50: _εc3 = 1.75 else: _εc3 = 1.75+0.55*(fck - 50)/40 return _εc3
[docs]def εcu1(fck): """ Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days Returns: float: Given using the expressions: .. math:: \\begin{eqnarray} ε_{cu1} & = & 3.5 & for & f_{ck} \le 50MPa \\\\ ε_{cu1} & = & 2.8 + 27 \cdot ((98 - f_{cm})/100)^4 & for & f_{ck} \ge 50MPa \\end{eqnarray} """ fcm = strength.fcm(fck) if fck<50: _εcu1 = 3.5 else: _εcu1 = 2.8 + 27*((98-fcm)/100)**4 return _εcu1
[docs]def εcu2(fck): """ The ultimate strain Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days Returns: float: Given using the expressions: .. math:: \\begin{eqnarray} ε_{cu2} & = & 3.5 & for & f_{ck} \le 50MPa \\\\ ε_{cu2} & = & 2.6 + 35 \cdot ((90 - f_{ck})/100)^4 & for & f_{ck} \ge 50MPa \\end{eqnarray} """ if fck<50: _εcu2 = 3.5 else: _εcu2 = 2.6 + 35*((90-fck)/100)**4 return _εcu2
[docs]def εcu3(fck): """ Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days Returns: float: Given using the expressions: .. math:: \\begin{eqnarray} ε_{cu2} & = & 3.5 & for & f_{ck} \le 50MPa \\\\ ε_{cu2} & = & 2.6 + 35 \cdot ((90 - f_{ck})/100)^4 & for & f_{ck} \ge 50MPa \\end{eqnarray} """ if fck<50: _εcu3 = 3.5 else: _εcu3 = 2.6 + 35*((90-fck)/100)**4 return _εcu3
[docs]def n(fck): """ Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days Returns: float: Given using the expressions: .. math:: \\begin{eqnarray} n & = & 2.0 & for & f_{ck} \le 50MPa \\\\ n & = & 1.4 + 23.4 \cdot ((90 - f_{ck})/100)^4 & for & f_{ck} \ge 50MPa \\end{eqnarray} """ if fck<50: _n = 2.0 else: _n = 1.4 + 23.4*((90-fck)/100)**4 return _n
[docs]def σc_nl(fck, εc): """ Stress-strain relation for non-linear structural analyses Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days εc (float): concrete strain (‰) Returns: float: Given using the expression: .. math:: \\begin{eqnarray} σ_{c} & = & f_{ctm}\dfrac{kη-η^2}{1+(k-2)η} \\\\ where: & \\\\ η & = & \dfrac{ε_c}{ε_{c1}} \\\\ k & = & 1.05\cdot E_{cm} \cdot ε_{c1} / f_{cm} \\end{eqnarray} """ _Ecm = elastic_deformation.Ecm(fck) _εc1 = εc1(fck) _fcm = strength.fcm(fck) η = εc / _εc1 k = 1.05 * _Ecm * _εc1 / _fcm _σc = _fcm * (k * η - η * η)/ (1 + η * (k - 2)) return _σc
[docs]def σc_design(fck, αcc, γc, εc): """ Stress-strain relations for the design of cross-sections Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days αcc (float): Coefficient taking account of long term effects on the compressive strength and of unfavourable effects resulting from the way the load is applied γc (float): Safety factor εc (float): concrete strain (‰) Returns: float: Given using the expression: .. math:: \\begin{eqnarray} σ_{c} & = & f_{cd}\cdot(1-(1-\dfrac{ε_c}{ε_{c2}})^n) & for & 0\le ε_c \le ε_{c2} \\\\ σ_{c} & = & f_{cd} & for & ε_{c2}\le ε_c \le ε_{cu2} \\end{eqnarray} """ _fcd = strength.fcd(αcc, fck, γc) _εc2 = εc2(fck) _εcu2 = εcu2(fck) _n = n(fck) if εc < _εc2: _σc = _fcd * ( 1 - (1 - εc / _εc2)**_n) else: _σc = _fcd return _σc
[docs]def σc_bilin(fck, αcc, γc, εc): """ Args: fck (float): Characteristic compressive cylinder strength of concrete at 28 days αcc (float): Coefficient taking account of long term effects on the compressive strength and of unfavourable effects resulting from the way the load is applied γc (float): Safety factor εc (float): concrete strain (‰) Returns: float: """ _fcd = strength.fcd(αcc, fck, γc) _εc3 = εc3(fck) if εc < _εc3: _σc = _fcd * εc / _εc3 else: _σc = _fcd return _σc