Skip to content

rectangular

structural_sections.concrete.reinforced_concrete_sections.rectangular

Rectangular reinforced cross-section.

Classes:

structural_sections.concrete.reinforced_concrete_sections.rectangular.RectangularReinforcedCrossSection

RectangularReinforcedCrossSection(
    width: MM,
    height: MM,
    concrete_material: ConcreteMaterial,
    covers: CoversRectangular = CoversRectangular(),
    name: str = "Rectangular Reinforced Concrete Section",
)

Bases: ReinforcedCrossSection

Representation of a reinforced rectangular concrete cross-section like a beam.

Parameters:

  • width (MM) –

    The width of the rectangular cross-section [mm].

  • height (MM) –

    The height of the rectangular cross-section [mm].

  • concrete_material (ConcreteMaterial) –

    Material properties of the concrete.

  • covers (CoversRectangular, default: CoversRectangular() ) –

    The reinforcement covers for the cross-section [mm]. The default on all sides is 50 mm.

  • name (str, default: 'Rectangular Reinforced Concrete Section' ) –

    The name of the cross-section, default is "Rectangular Reinforced Concrete Section".

Initialize the rectangular reinforced concrete section.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/rectangular.py
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
def __init__(
    self,
    width: MM,
    height: MM,
    concrete_material: ConcreteMaterial,
    covers: CoversRectangular = CoversRectangular(),
    name: str = "Rectangular Reinforced Concrete Section",
) -> None:
    """Initialize the rectangular reinforced concrete section."""
    super().__init__(
        profile=RectangularProfile(
            name="Rectangular Reinforced Concrete Section",
            width=width,
            height=height,
        ),
        concrete_material=concrete_material,
    )
    self.name = name
    self.width = width
    self.height = height
    self.covers = covers
    self.plotter = RectangularCrossSectionPlotter(cross_section=self)

structural_sections.concrete.reinforced_concrete_sections.rectangular.RectangularReinforcedCrossSection.add_longitudinal_reinforcement_by_quantity

add_longitudinal_reinforcement_by_quantity(
    n: int,
    diameter: MM,
    material: ReinforcementSteelMaterial,
    edge: Literal["upper", "right", "lower", "left"],
    cover: MM | None = None,
    corner_offset: MM = 0.0,
) -> None

Add longitudinal reinforcement to the cross-section based on the quantity configuration of rebars and a given edge of the cross-section.

for example: 5⌀12 on upper edge, 4⌀16 on lower edge, etc.

Parameters:

  • n (int) –

    Amount of longitudinal bars.

  • diameter (MM) –

    Diameter of the rebars [mm].

  • material (ReinforcementSteelMaterial) –

    Representation of the properties of reinforcement steel suitable for use with NEN-EN 1992-1-1.

  • edge (Literal['upper', 'right', 'lower', 'left']) –

    Edge of the cross-section where the rebars are placed.

  • cover (MM | None, default: None ) –

    Cover of the rebars [mm]. If not provided, the default cover on the given edge of the cross-section is used.

  • corner_offset (MM, default: 0.0 ) –

    The offset of the first and last rebars from the corners of the cross-section towards the center of the cross-section [mm]. If not provided, the rebars are to be placed at the corners taking into account the present covers and stirrups inside the cross-section.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/rectangular.py
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
def add_longitudinal_reinforcement_by_quantity(
    self,
    n: int,
    diameter: MM,
    material: ReinforcementSteelMaterial,
    edge: Literal["upper", "right", "lower", "left"],
    cover: MM | None = None,
    corner_offset: MM = 0.0,
) -> None:
    """Add longitudinal reinforcement to the cross-section based on the quantity configuration of rebars and a given edge of the cross-section.

     for example: 5⌀12 on upper edge, 4⌀16 on lower edge, etc.

    Parameters
    ----------
    n: int
        Amount of longitudinal bars.
    diameter: MM
        Diameter of the rebars [mm].
    material : ReinforcementSteelMaterial
        Representation of the properties of reinforcement steel suitable for use with NEN-EN 1992-1-1.
    edge: Literal["upper", "right", "lower", "left"]
        Edge of the cross-section where the rebars are placed.
    cover: MM, optional
        Cover of the rebars [mm]. If not provided, the default cover on the given edge of the cross-section is used.
    corner_offset: MM, optional
        The offset of the first and last rebars from the corners of the cross-section towards the center of the cross-section [mm]. If not
        provided, the rebars are to be placed at the corners taking into account the present covers and stirrups inside the cross-section.
    """
    line = self._get_reference_line(
        edge=edge,
        diameter=diameter,
        cover=cover,
        corner_offset=corner_offset,
    )
    assert line
    return self.add_reinforcement_configuration(
        line=self._get_reference_line,
        configuration=ReinforcementByQuantity(
            diameter=diameter,
            material=material,
            n=n,
        ),
        edge=edge,
        cover=cover,
        corner_offset=corner_offset,
        diameter=diameter,
    )

structural_sections.concrete.reinforced_concrete_sections.rectangular.RectangularReinforcedCrossSection.add_stirrup_along_edges

add_stirrup_along_edges(
    diameter: MM,
    distance: MM,
    material: ReinforcementSteelMaterial,
    shear_check: bool = True,
    torsion_check: bool = True,
    mandrel_diameter_factor: DIMENSIONLESS | None = None,
    anchorage_length: MM = 0.0,
    relative_start_position: RATIO = 0.0,
    relative_end_position: RATIO = 1.0,
) -> StirrupConfiguration

Adds a stirrup configuration along the edges of the cross-section taking the covers into account. The created configuration goes around the longitudinal rebars (if any).

Use .add_stirrup_configuration() to add a stirrup configuration of any shape, size, and position (as long as it is inside the cross-section).

Parameters:

  • diameter (MM) –

    Diameter of the stirrups [mm].

  • distance (MM) –

    Longitudinal distance between stirrups [mm].

  • material (ReinforcementSteelMaterial) –

    Representation of the properties of reinforcement steel suitable for use with NEN-EN 1992-1-1

  • shear_check (bool, default: True ) –

    Take stirrup into account in shear check

  • torsion_check (bool, default: True ) –

    Take stirrup into account in torsion check

  • mandrel_diameter_factor (DIMENSIONLESS | None, default: None ) –

    Inner diameter of mandrel as multiple of stirrup diameter [-] (default: 4⌀ for ⌀<=16mm and 5⌀ for ⌀>16mm) Tabel 8.1Na NEN-EN 1992-1-1 Dutch National Annex.

  • anchorage_length (MM, default: 0.0 ) –

    Anchorage length [mm]

  • relative_start_position (RATIO, default: 0.0 ) –

    Relative position of the start of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1. Default is 0 (start).

  • relative_end_position (RATIO, default: 1.0 ) –

    Relative position of the end of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1. Default is 1 (end).

Returns:

  • StirrupConfiguration

    Newly created stirrup configuration inside the cross-section.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/rectangular.py
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
def add_stirrup_along_edges(
    self,
    diameter: MM,
    distance: MM,
    material: ReinforcementSteelMaterial,
    shear_check: bool = True,
    torsion_check: bool = True,
    mandrel_diameter_factor: DIMENSIONLESS | None = None,
    anchorage_length: MM = 0.0,
    relative_start_position: RATIO = 0.0,
    relative_end_position: RATIO = 1.0,
) -> StirrupConfiguration:
    """Adds a stirrup configuration along the edges of the cross-section taking the covers into account. The created configuration goes around
    the longitudinal rebars (if any).

    Use .add_stirrup_configuration() to add a stirrup configuration of any shape, size, and position (as long as it is inside the cross-section).


    Parameters
    ----------
    diameter: MM
        Diameter of the stirrups [mm].
    distance: MM
        Longitudinal distance between stirrups [mm].
    material : ReinforcementSteelMaterial
        Representation of the properties of reinforcement steel suitable for use with NEN-EN 1992-1-1
    shear_check: bool
        Take stirrup into account in shear check
    torsion_check: bool
        Take stirrup into account in torsion check
    mandrel_diameter_factor: DIMENSIONLESS
        Inner diameter of mandrel as multiple of stirrup diameter [-]
        (default: 4⌀ for ⌀<=16mm and 5⌀ for ⌀>16mm) Tabel 8.1Na NEN-EN 1992-1-1 Dutch National Annex.
    anchorage_length: MM
        Anchorage length [mm]
    relative_start_position: RATIO
        Relative position of the start of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1.
        Default is 0 (start).
    relative_end_position: RATIO
        Relative position of the end of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1.
        Default is 1 (end).


    Returns
    -------
    StirrupConfiguration
        Newly created stirrup configuration inside the cross-section.
    """
    # get the corners of the cross-section
    min_x, min_y, max_x, max_y = self.profile.polygon.bounds

    # create the corners of the stirrup configuration based on the covers present
    left_bottom_corner = Point(min_x + self.covers.left + (diameter / 2), min_y + self.covers.lower + (diameter / 2))
    left_top_corner = Point(min_x + self.covers.left + (diameter / 2), max_y - self.covers.upper - (diameter / 2))
    right_top_corner = Point(max_x - self.covers.right - (diameter / 2), max_y - self.covers.upper - (diameter / 2))
    right_bottom_corner = Point(max_x - self.covers.right - (diameter / 2), min_y + self.covers.lower + (diameter / 2))

    return self.add_stirrup_configuration(
        StirrupConfiguration(
            geometry=Polygon([left_bottom_corner, left_top_corner, right_top_corner, right_bottom_corner]),
            diameter=diameter,
            distance=distance,
            material=material,
            shear_check=shear_check,
            torsion_check=torsion_check,
            mandrel_diameter_factor=mandrel_diameter_factor,
            anchorage_length=anchorage_length,
            based_on_cover=True,
            relative_start_position=relative_start_position,
            relative_end_position=relative_end_position,
        )
    )

structural_sections.concrete.reinforced_concrete_sections.rectangular.RectangularReinforcedCrossSection.add_stirrup_in_center

add_stirrup_in_center(
    width: MM,
    diameter: MM,
    distance: MM,
    material: ReinforcementSteelMaterial,
    shear_check: bool = True,
    torsion_check: bool = True,
    mandrel_diameter_factor: float | None = None,
    anchorage_length: MM = 0.0,
    relative_start_position: RATIO = 0.0,
    relative_end_position: RATIO = 1.0,
) -> StirrupConfiguration

Add stirrups to the center of the reinforced cross-section based on a given width (ctc of the legs). The created configuration goes around the longitudinal rebars (if any).

Use .add_stirrup_configuration() to add a stirrup configuration of any shape, size, and position (as long as it is inside the cross-section).

Parameters:

  • width (MM) –

    Total width of the stirrup taken from the center lines of the legs [mm].

  • diameter (MM) –

    Diameter of the stirrups [mm].

  • distance (MM) –

    Longitudinal distance between stirrups [mm].

  • material (ReinforcementSteelMaterial) –

    Representation of the properties of reinforcement steel suitable for use with NEN-EN 1992-1-1

  • shear_check (bool, default: True ) –

    Take stirrup into account in shear check

  • torsion_check (bool, default: True ) –

    Take stirrup into account in torsion check

  • mandrel_diameter_factor (float | None, default: None ) –

    Inner diameter of mandrel as multiple of stirrup diameter [-] (default: 4⌀ for ⌀<=16mm and 5⌀ for ⌀>16mm) Tabel 8.1Na NEN-EN 1992-1-1 Dutch National Annex.

  • anchorage_length (MM, default: 0.0 ) –

    Anchorage length [mm]

  • relative_start_position (RATIO, default: 0.0 ) –

    Relative position of the start of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1. Default is 0 (start).

  • relative_end_position (RATIO, default: 1.0 ) –

    Relative position of the end of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1. Default is 1 (end).

Returns:

  • StirrupConfiguration

    Newly created stirrup configuration inside the cross-section.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/rectangular.py
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
def add_stirrup_in_center(
    self,
    width: MM,
    diameter: MM,
    distance: MM,
    material: ReinforcementSteelMaterial,
    shear_check: bool = True,
    torsion_check: bool = True,
    mandrel_diameter_factor: float | None = None,
    anchorage_length: MM = 0.0,
    relative_start_position: RATIO = 0.0,
    relative_end_position: RATIO = 1.0,
) -> StirrupConfiguration:
    """Add stirrups to the center of the reinforced cross-section based on a given width (ctc of the legs). The created configuration goes around
    the longitudinal rebars (if any).

    Use .add_stirrup_configuration() to add a stirrup configuration of any shape, size, and position (as long as it is inside the cross-section).

    Parameters
    ----------
    width: MM
        Total width of the stirrup taken from the center lines of the legs [mm].
    diameter: MM
        Diameter of the stirrups [mm].
    distance: MM
        Longitudinal distance between stirrups [mm].
    material : ReinforcementSteelMaterial
        Representation of the properties of reinforcement steel suitable for use with NEN-EN 1992-1-1
    shear_check: bool
        Take stirrup into account in shear check
    torsion_check: bool
        Take stirrup into account in torsion check
    mandrel_diameter_factor: DIMENSIONLESS
        Inner diameter of mandrel as multiple of stirrup diameter [-]
        (default: 4⌀ for ⌀<=16mm and 5⌀ for ⌀>16mm) Tabel 8.1Na NEN-EN 1992-1-1 Dutch National Annex.
    anchorage_length: MM
        Anchorage length [mm]
    relative_start_position: RATIO
        Relative position of the start of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1.
        Default is 0 (start).
    relative_end_position: RATIO
        Relative position of the end of the stirrup configuration inside the cross-section (longitudinal direction). Value between 0 and 1.
        Default is 1 (end).

    Returns
    -------
    StirrupConfiguration
        Newly created stirrup configuration inside the cross-section.
    """
    # get the corners of the cross-section
    _, min_y, _, max_y = self.profile.polygon.bounds

    # create the corners of the stirrup configuration based on the covers present
    left_bottom_corner = Point(-width / 2, min_y + self.covers.lower + (diameter / 2))
    left_top_corner = Point(-width / 2, max_y - self.covers.upper - (diameter / 2))
    right_top_corner = Point(width / 2, max_y - self.covers.upper - (diameter / 2))
    right_bottom_corner = Point(width / 2, min_y + self.covers.lower + (diameter / 2))

    return self.add_stirrup_configuration(
        StirrupConfiguration(
            geometry=Polygon([left_bottom_corner, left_top_corner, right_top_corner, right_bottom_corner]),
            diameter=diameter,
            distance=distance,
            material=material,
            shear_check=shear_check,
            torsion_check=torsion_check,
            mandrel_diameter_factor=mandrel_diameter_factor,
            anchorage_length=anchorage_length,
            based_on_cover=True,
            relative_start_position=relative_start_position,
            relative_end_position=relative_end_position,
        )
    )

structural_sections.concrete.reinforced_concrete_sections.rectangular.RectangularReinforcedCrossSection.plot

plot(*args, **kwargs) -> Figure

Plot the cross-section. Making use of the standard plotter.

If you want to use a custom plotter, use the .plotter attribute to plot the cross-section.

Parameters:

  • *args

    Additional arguments passed to the plotter.

  • **kwargs

    Additional keyword arguments passed to the plotter.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/rectangular.py
326
327
328
329
330
331
332
333
334
335
336
337
338
def plot(self, *args, **kwargs) -> plt.Figure:
    """Plot the cross-section. Making use of the standard plotter.

    If you want to use a custom plotter, use the .plotter attribute to plot the cross-section.

    Parameters
    ----------
    *args
        Additional arguments passed to the plotter.
    **kwargs
        Additional keyword arguments passed to the plotter.
    """
    return self.plotter.plot(*args, **kwargs)