Skip to content

lnp_profile

structural_sections.steel.profile_definitions.lnp_profile

LNP-Profile.

Classes:

  • LNPProfile

    Representation of an LNP profile.

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile dataclass

LNPProfile(
    *,
    total_height: MM,
    total_width: MM,
    web_thickness: MM,
    base_thickness: MM,
    root_radius: MM,
    back_radius: MM,
    web_toe_radius: MM,
    base_toe_radius: MM,
    name: str = "LNP-Profile",
    plotter: Callable[[Profile], Figure] = plot_shapes,
)

Bases: Profile

Representation of an LNP profile.

Web is the vertical part and base is the horizontal part of the LNP-profile.

Attributes:

  • total_height (MM) –

    The total height of the profile [mm].

  • total_width (MM) –

    The total width of the profile [mm].

  • web_thickness (MM) –

    The thickness of the web [mm].

  • base_thickness (MM) –

    The thickness of the base [mm].

  • root_radius (MM) –

    The inner radius of the web-base corner.

  • back_radius (MM) –

    The outer radius of the web-base corner.

  • web_toe_radius (MM) –

    The radius of the toe in the web.

  • base_toe_radius (MM) –

    The radius of the toe in the base.

  • name (str) –

    The name of the profile. Default is "LNP-Profile". If corrosion is applied, the name will include the corrosion value.

  • plotter (Callable[[Profile], Figure]) –

    The plotter function to visualize the profile (default: plot_shapes).

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.back_radius instance-attribute

back_radius: MM

The outer radius of the web-base corner [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.base_inner_width class-attribute instance-attribute

base_inner_width: MM = field(init=False)

The inner width of the base [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.base_outer_width class-attribute instance-attribute

base_outer_width: MM = field(init=False)

The outer width of the base [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.base_thickness instance-attribute

base_thickness: MM

The thickness of the base [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.base_toe_radius instance-attribute

base_toe_radius: MM

The radius of the toe in the base [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.base_toe_straight_part class-attribute instance-attribute

base_toe_straight_part: MM = field(init=False)

The straight part of the base before the toe radius [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.max_thickness property

max_thickness: MM

Maximum element thickness of the profile [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.name class-attribute instance-attribute

name: str = 'LNP-Profile'

The name of the profile.

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.plotter class-attribute instance-attribute

plotter: Callable[[Profile], Figure] = plot_shapes

The plotter function to visualize the profile.

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.root_radius instance-attribute

root_radius: MM

The inner radius of the web-base corner [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.total_height instance-attribute

total_height: MM

The total height of the profile [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.total_width instance-attribute

total_width: MM

The total width of the profile [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.web_inner_height class-attribute instance-attribute

web_inner_height: MM = field(init=False)

The inner height of the web [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.web_outer_height class-attribute instance-attribute

web_outer_height: MM = field(init=False)

The outer height of the web [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.web_thickness instance-attribute

web_thickness: MM

The thickness of the web [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.web_toe_radius instance-attribute

web_toe_radius: MM

The radius of the toe in the web [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.web_toe_straight_part class-attribute instance-attribute

web_toe_straight_part: MM = field(init=False)

The straight part of the web before the toe radius [mm].

structural_sections.steel.profile_definitions.lnp_profile.LNPProfile.with_corrosion

with_corrosion(corrosion: MM = 0) -> LNPProfile

Return a new LNP profile with corrosion applied.

The name attribute of the new instance will be updated to reflect the total corrosion applied including any previous corrosion indicated in the original name.

Parameters:

  • corrosion (MM, default: 0 ) –

    Corrosion per side (default is 0).

Returns:

  • LNPProfile

    A new LNPProfile instance with the specified corrosion applied.

Raises:

  • ValueError

    If the resulting profile is fully corroded.

Source code in blueprints/structural_sections/steel/profile_definitions/lnp_profile.py
131
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
def with_corrosion(self, corrosion: MM = 0) -> LNPProfile:
    """Return a new LNP profile with corrosion applied.

    The name attribute of the new instance will be updated to reflect the total corrosion applied
    including any previous corrosion indicated in the original name.

    Parameters
    ----------
    corrosion : MM, optional
        Corrosion per side (default is 0).

    Returns
    -------
    LNPProfile
        A new LNPProfile instance with the specified corrosion applied.

    Raises
    ------
    ValueError
        If the resulting profile is fully corroded.
    """
    raise_if_negative(corrosion=corrosion)

    if corrosion == 0:
        return self

    total_width = self.total_width - 2 * corrosion
    total_height = self.total_height - 2 * corrosion

    web_thickness = self.web_thickness - 2 * corrosion
    base_thickness = self.base_thickness - 2 * corrosion
    root_radius = self.root_radius + corrosion
    back_radius = max(self.back_radius - corrosion, 0)
    base_toe_radius = max(self.base_toe_radius - corrosion, 0)
    web_toe_radius = max(self.web_toe_radius - corrosion, 0)

    if any(
        thickness < FULL_CORROSION_TOLERANCE
        for thickness in (
            web_thickness,
            base_thickness,
        )
    ):
        raise ValueError("The profile has fully corroded.")

    name = update_name_with_corrosion(self.name, corrosion=corrosion)

    return LNPProfile(
        total_width=total_width,
        total_height=total_height,
        web_thickness=web_thickness,
        base_thickness=base_thickness,
        root_radius=root_radius,
        back_radius=back_radius,
        web_toe_radius=web_toe_radius,
        base_toe_radius=base_toe_radius,
        name=name,
        plotter=self.plotter,
    )