Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/api/codes/ec2_2004/cracks.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,9 @@ The following functions are related to calculating crack widths.
```{eval-rst}
.. autofunction:: structuralcodes.codes.ec2_2004.As_min_2
```

## Crack widths due to restraint of imposed deformations

```{eval-rst}
.. autofunction:: structuralcodes.codes.ec2_2004.eps_sm_eps_cm_restraint_end
```
4 changes: 4 additions & 0 deletions structuralcodes/codes/ec2_2004/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
k_sargin,
n_parabolic_rectangular,
)
from ._cracking_restraint_imposed_deformations import (
eps_sm_eps_cm_restraint_end,
)
from ._reinforcement_material_properties import (
epsud,
fyd,
Expand Down Expand Up @@ -94,6 +97,7 @@
'Asw_s_required',
'alpha_e',
'eps_sm_eps_cm',
'eps_sm_eps_cm_restraint_end',
'hc_eff',
'k',
'k1',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
"""Collection of functions from EUROCODE 1992-3:2006."""


def eps_sm_eps_cm_restraint_end(
alpha_e: float,
rho_p_eff: float,
kc: float,
k: float,
fct_eff: float,
Es: float,
) -> float:
"""Returns the strain difference (epsilon_sm - epsilon_cm) needed to
compute the crack width for restraint member at its end.

EN 1992-3:2006, Eq. (M.1).

Args:
alpha_e (float): Is the ratio Es/Ecm.
rho_p_eff (float): Effective bond ratio between areas given by Eq.
(7.10).
kc (float): is a coefficient which takes account of the stress
distribution within the section immediately prior to cracking and
the change of the lever arm.
k (float): is the coefficient which allow for the effect of
non-uniform self-equilibrating stresses, which lead to a
reduction of restraint forces.
k=1 for webs w<=300mm or flanges widths less than 300mm
k=0.65 for webs w>=800mm or flanges with widths greater than 800mm
Intermediate values may be interpolated.
fct_eff (float): Is the mean value of the tensile strength in MPa of
the concrete effective at the time when the cracks may first be
expected to occur: fct_eff=fctm or fctm(t) if crack is expected
earlier than 28 days.
Es (float): Steel elastic modulus in MPa.

Returns:
float: The calculated strain difference.
"""
return (
0.5 * alpha_e * kc * k * fct_eff * (1 + 1 / (alpha_e * rho_p_eff)) / Es
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""Tests for EUROCODE 1992-3:2006."""

import math

import pytest

from structuralcodes.codes.ec2_2004 import (
_cracking_restraint_imposed_deformations,
)


@pytest.mark.parametrize(
'alpha_e, rho_p_eff, kc, k, fct_eff, Es, expected',
[
(5.869, 0.01478, 1, 1, 3.2, 200000, 0.000590),
(5.869, 0.009690, 1, 1, 3.2, 200000, 0.000875),
(5.512, 0.01478, 1, 1, 3.8, 200000, 0.000694),
(5.512, 0.009690, 1, 1, 3.8, 200000, 0.001032),
],
)
def test_eps_sm_eps_cm_m1_returns_expected_values(
alpha_e, kc, k, fct_eff, rho_p_eff, Es, expected
):
"""Test that eps_sm_cm_m1 returns expected values."""
# Assert
assert math.isclose(
_cracking_restraint_imposed_deformations.eps_sm_eps_cm_restraint_end(
alpha_e, rho_p_eff, kc, k, fct_eff, Es
),
expected,
abs_tol=10e-5,
)