Skip to content

base

structural_sections.concrete.reinforced_concrete_sections.base

Base class of all reinforced cross-sections.

Classes:

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection

ReinforcedCrossSection(profile: Profile, concrete_material: ConcreteMaterial)

Bases: ABC

Base class of all reinforced cross-sections.

Initialize the reinforced cross-section.

Parameters:

  • profile (Profile) –

    profile of the reinforced concrete section.

  • concrete_material (ConcreteMaterial) –

    Material properties of the concrete.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/base.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def __init__(
    self,
    profile: Profile,
    concrete_material: ConcreteMaterial,
) -> None:
    """Initialize the reinforced cross-section.

    Parameters
    ----------
    profile : Profile
        profile of the reinforced concrete section.
    concrete_material : ConcreteMaterial
        Material properties of the concrete.
    """
    self.profile = profile
    self.concrete_material = concrete_material
    self._reinforcement_configurations: list[tuple[LineString | Callable[..., LineString], ReinforcementConfiguration]] = []
    self._single_longitudinal_rebars: list[Rebar] = []
    self._stirrups: list[StirrupConfiguration] = []

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.concrete_volume property

concrete_volume: M3_M

Total volume of the reinforced cross-section per meter length [m³/m].

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.longitudinal_rebars property

longitudinal_rebars: list[Rebar]

Return a list of all longitudinal rebars.

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.reinforcement_area_longitudinal_bars property

reinforcement_area_longitudinal_bars: MM2_M

Total area of the longitudinal reinforcement in the cross-section per meter length [mm²/m].

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.reinforcement_weight property

reinforcement_weight: KG_M

Total mass of the reinforcement in the cross-section per meter length [kg/m].

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.reinforcement_weight_longitudinal_bars property

reinforcement_weight_longitudinal_bars: KG_M

Total mass of the longitudinal reinforcement in the cross-section per meter length [kg/m].

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.reinforcement_weight_stirrups property

reinforcement_weight_stirrups: KG_M

Total mass of the stirrups' reinforcement in the cross-section per meter length [kg/m].

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.stirrups property

stirrups: list[StirrupConfiguration]

Return a list of all stirrups.

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.weight_per_volume property

weight_per_volume: KG_M3

Total mass of the cross-section per meter length (concrete+reinforcement) [kg/m³].

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.add_longitudinal_rebar

add_longitudinal_rebar(rebar: Rebar) -> Rebar

Adds a single reinforcement bar to the cross-section.

Parameters:

  • rebar (Rebar) –

    Rebar to be added to the cross-section.

Raises:

  • ValueError

    If the rebar is not fully inside the cross-section.

Returns:

  • Rebar

    Newly created Rebar

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/base.py
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
def add_longitudinal_rebar(
    self,
    rebar: Rebar,
) -> Rebar:
    """Adds a single reinforcement bar to the cross-section.

    Parameters
    ----------
    rebar : Rebar
        Rebar to be added to the cross-section.

    Raises
    ------
    ValueError
        If the rebar is not fully inside the cross-section.

    Returns
    -------
    Rebar
        Newly created Rebar
    """
    # check if given diameter/coordinates are fully inside the cross-section
    if not rebar.polygon.within(self.profile.polygon):
        msg = f"Rebar (diameter={rebar.diameter}, x={rebar.x}, y={rebar.y}) is not (fully) inside the cross-section."
        raise ValueError(msg)

    # add the rebar to the list of longitudinal rebars
    self._single_longitudinal_rebars.append(rebar)

    return rebar

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.add_reinforcement_configuration

add_reinforcement_configuration(
    line: LineString | Callable[..., LineString],
    configuration: ReinforcementConfiguration,
    *args,
    **kwargs,
) -> None

Add a reinforcement configuration to the cross-section.

Parameters:

  • line (LineString | Callable[..., LineString]) –

    Representing the path of the reinforcement in the cross-section. Start of the line defines the first rebar of the configuration, end of the line defines the last rebar. If a callable is given, it should return a LineString. The callable can take additional arguments. Arguments can be passed to the callable using the args and *kwargs.

  • configuration (ReinforcementConfiguration) –

    Configuration of the reinforcement.

  • args (Any, default: () ) –

    Additional arguments for the callable line. If line is not a callable, these arguments are ignored.

  • kwargs (Any, default: {} ) –

    Additional keyword arguments for the callable line. If line is not a callable, these arguments are ignored.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/base.py
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
def add_reinforcement_configuration(
    self,
    line: LineString | Callable[..., LineString],
    configuration: ReinforcementConfiguration,
    *args,
    **kwargs,
) -> None:
    """Add a reinforcement configuration to the cross-section.

    Parameters
    ----------
    line : LineString | Callable[..., LineString]
        Representing the path of the reinforcement in the cross-section.
        Start of the line defines the first rebar of the configuration, end of the line defines the last rebar.
        If a callable is given, it should return a LineString. The callable can take additional arguments.
        Arguments can be passed to the callable using the *args and **kwargs.
    configuration : ReinforcementConfiguration
        Configuration of the reinforcement.
    args : Any
        Additional arguments for the callable line. If line is not a callable, these arguments are ignored.
    kwargs : Any
        Additional keyword arguments for the callable line. If line is not a callable, these arguments are ignored.

    """
    # check if the line is a callable and wrap it with the given arguments
    if callable(line):
        line = partial(line, *args, **kwargs)

    # add the reinforcement configuration to the list
    self._reinforcement_configurations.append((line, configuration))

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.add_stirrup_configuration

add_stirrup_configuration(
    stirrup: StirrupConfiguration,
) -> StirrupConfiguration

Add a stirrup configuration to the cross-section.

Parameters:

  • stirrup (StirrupConfiguration) –

    Configuration of stirrup reinforcement in the cross-section.

Returns:

  • StirrupConfiguration

    Newly created Stirrup

Raises:

  • ValueError

    If the stirrup is not fully inside the cross-section.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/base.py
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
def add_stirrup_configuration(self, stirrup: StirrupConfiguration) -> StirrupConfiguration:
    """Add a stirrup configuration to the cross-section.

    Parameters
    ----------
    stirrup : StirrupConfiguration
        Configuration of stirrup reinforcement in the cross-section.

    Returns
    -------
    StirrupConfiguration
        Newly created Stirrup

    Raises
    ------
    ValueError
        If the stirrup is not fully inside the cross-section.
    """
    # check if the stirrup is inside the cross-section
    stirrup_outside_edge = stirrup.geometry.buffer(distance=stirrup.diameter / 2)
    if not self.profile.polygon.contains(stirrup_outside_edge):
        msg = "Stirrup is not (fully) inside the cross-section."
        raise ValueError(msg)

    # add the stirrup to the list
    self._stirrups.append(stirrup)

    return stirrup

structural_sections.concrete.reinforced_concrete_sections.base.ReinforcedCrossSection.get_present_steel_materials

get_present_steel_materials() -> list[ReinforcementSteelMaterial]

Return a list of all present steel materials in the cross-section.

Source code in blueprints/structural_sections/concrete/reinforced_concrete_sections/base.py
108
109
110
111
112
def get_present_steel_materials(self) -> list[ReinforcementSteelMaterial]:
    """Return a list of all present steel materials in the cross-section."""
    materials = [rebar.material for rebar in self.longitudinal_rebars]
    materials.extend(stirrup.material for stirrup in self._stirrups)
    return list(set(materials))