Concrete beam with flanges#

Units: Millimeter [mm], Newton [N]

Geometries and materials#

A concrete beam with concrete flanges positioned at the top is given here.

The beam has a width of 200 mm and a height of 400 mm. The concrete flanges are positioned at the top of the beam an have an overall width of 2000 mm. The concrete material is of type C30/35 with a mean compressive strength of \(f_\mathrm{cm} = 38\) N/mm² [1].

The concrete flanges are reinforced with a with a top- and a bottom-reinforcement-layer. Within these layer diameter 10 mm reinforcement-bars are used with a distance of 100 mm.

At the bottom-edge of the concrete beam 4 reinforcement-bars of diameter 20 mm are introduced. The reinforcement has a yield strength of \(f_\mathrm{s} = 500\) N/mm² and a tensile strength \(f_\mathrm{su} = 550\) N/mm². At failure a strain of 2.5 % is assumed. The concrete-cover of the reinforcement-bars applies to \(c_\mathrm{nom} = 15\) mm.

Geometry of the reinforced concrete beam with concrete flanges
Geometry of the reinforced concrete beam with concrete flanges

Geometry: Reinforced concrete beam with concrete flanges#

Defined stress-strain-relationship of reinforcement
Defined stress-strain-relationship of reinforcement

Material: Bi-linear stress-strain-relationship of reinforcement#

Defined non-linear stress-strain-relationship of concrete in compression acc. to EN 1992-1-1
Defined non-linear stress-strain-relationship of concrete in compression acc. to EN 1992-1-1

Material: Concrete non-linear stress-strain-relationship in compression acc. EN 1992-1-1 [1]#

Stress-strain-relationship of concrete in tension
Stress-strain-relationship of concrete in tension

Material: Stress-strain-relationship of concrete in tension#

Concrete beam with flanges cross-section#

>>> from m_n_kappa import Rectangle, Concrete, RebarLayer, Reinforcement
>>> flanges = Rectangle(top_edge=0.0, bottom_edge=100., width=2000.0)
>>> beam = Rectangle(top_edge=flanges.bottom_edge, bottom_edge=400.0, width=200.0)
>>> concrete_geometry = flanges + beam
>>> concrete = Concrete(38.0)
>>> concrete_beam = concrete_geometry + concrete
>>> flange_concrete_cover = 15.0 + 0.5 * 10.0
>>> flange_top_rebars = RebarLayer(
...     centroid_z=flange_concrete_cover, width=flanges.width - 2.*flange_concrete_cover,
...     rebar_horizontal_distance=100.0, rebar_diameter=10.0)
>>> flange_bottom_rebars = RebarLayer(
...     centroid_z=flanges.bottom_edge - flange_concrete_cover, width=flanges.width - 2.*flange_concrete_cover,
...     rebar_horizontal_distance=100.0, rebar_diameter=10.0)
>>> beam_concrete_cover = 15.0 + 0.5 * 20.0
>>> beam_rebars = RebarLayer(
...     centroid_z=beam.bottom_edge - beam_concrete_cover, width=beam.width - 2.*beam_concrete_cover,
...     rebar_number=4, rebar_diameter=20.0)
>>> rebars = flange_top_rebars + flange_bottom_rebars + beam_rebars
>>> reinforcing_steel = Reinforcement(f_s=500.0, f_su=550.0, failure_strain=0.25)
>>> reinforcement = rebars + reinforcing_steel
>>> cross_section = concrete_beam + reinforcement

Computation#

The cross_section you created above is the basis to do a variety of computations:

In case you want to compute a single curvature-value from a given strain at a given position, you first have to define strain and its position using StrainPosition strain_position is the boundary-condition, that is passed to MKappaByStrainPosition that is computing the curvature.

>>> from m_n_kappa import StrainPosition, MKappaByStrainPosition
>>> strain_position = StrainPosition(strain=-0.002, position=0.0, material="")
>>> computation = MKappaByStrainPosition(
...     cross_section=cross_section,
...     strain_position = strain_position,
...     positive_curvature=True)

After computation you can extract the results as follows:

See also

Moment-Curvature-Curve: further explanations regarding computation of a single moment-curvature-point

The \(M\)-\(\kappa\)-curve is easily computed by passing the created cross_section to MKappaCurve. You only have to decide if you want only the positive moment-curvature-points, the negative moment-curvature-points or both.

>>> from m_n_kappa import MKappaCurve
>>> positive_m_kappa = MKappaCurve(cross_section=cross_section)
>>> negative_m_kappa = MKappaCurve(
...     cross_section=cross_section,
...     include_positive_curvature=False,
...     include_negative_curvature=True)
>>> full_m_kappa = MKappaCurve(
...     cross_section=cross_section,
...     include_positive_curvature=True,
...     include_negative_curvature=True)

The computed points are then stored in the attribute m_kappa_points that returns MKappaCurvePoints-object.

See also

Moment-Curvature-Curve : further explanation regarding computation of the Moment- Curvature-Curve

For computation of the \(M\)-\(\kappa\)-curves in a beam you need the loading-scenario beside your cross_section. And you should decide in how many elements the beam shall be split into (see element_number). In case you also want to consider the effective widths you may set consider_widths=True.

>>> from m_n_kappa import SingleSpanUniformLoad, Beam
>>> loading = SingleSpanUniformLoad(length=8000, load=1.0)
>>> beam = Beam(cross_section=cross_section, element_number=10, load=loading)
>>> beam_consider_widths = Beam(
...     cross_section=cross_section,
...     element_number=10,
...     load=loading,
...     consider_widths=True)

The computed beams allow you to do a number of analysis, like:

See also

Loading: further explanation of loading scenarios

Deformation : further explanation regarding computation of beam-deformation

References#