Skip to content

sheetpile_u_profile

structural_sections.steel.profile_definitions.sheetpile_u_profile

U-Shaped Sheet Pile Profile.

Classes:

  • SheetpileUProfile

    Representation of a U-shaped sheet pile profile constructed from coordinates.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile dataclass

SheetpileUProfile(
    *,
    coordinates: list[tuple[float, float]],
    web_thickness: MM,
    flange_thickness: MM,
    interlocking_ctc: MM,
    name: str = "U-Shaped Sheet Pile Profile",
    plotter: Callable[[Profile], Figure] = plot_shapes,
    number_of_sheets: int = 1,
)

Bases: Profile

Representation of a U-shaped sheet pile profile constructed from coordinates.

U-shaped sheet piles are interlocking structural elements used in retaining walls and cofferdams. AU and PU profiles are standardized examples of U-shaped sheet piles.

Attributes:

  • coordinates (list[tuple[float, float]]) –

    List of (x, y) coordinate tuples defining the profile geometry.

  • web_thickness (MM) –

    Thickness of the web [mm].

  • flange_thickness (MM) –

    Thickness of the flanges [mm].

  • interlocking_ctc (MM) –

    Center to center distance of the sheets (interlocking distance) [mm].

  • name (str) –

    Name of the profile.

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

    The plotter function to visualize the profile.

  • number_of_sheets (int) –

    Number of sheets in the profile.

Notes

The perimeter property is inherited from the Profile base class.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.coordinates instance-attribute

coordinates: list[tuple[float, float]]

List of (x, y) coordinate tuples defining the profile geometry.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.flange_thickness instance-attribute

flange_thickness: MM

Thickness of the flanges [mm].

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.flange_to_web_angle property

flange_to_web_angle: DEG

Angle between the web and the (horizontal) flange direction of the U-shaped sheet pile profile [deg].

Determined by intersecting a horizontal line through the vertical middle of the profile's bounding box with the profile boundary, then using the two endpoints of the polygon edge crossed nearest to the horizontal middle of the bounding box to compute the angle relative to the horizontal.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.interlocking_ctc instance-attribute

interlocking_ctc: MM

Center to center distance of the sheets (interlocking distance) [mm].

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.max_thickness property

max_thickness: MM

Maximum element thickness of the profile [mm].

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.name class-attribute instance-attribute

name: str = 'U-Shaped Sheet Pile Profile'

Name of the profile.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.number_of_sheets class-attribute instance-attribute

number_of_sheets: int = 1

Number of sheets in the profile.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.plotter class-attribute instance-attribute

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

The plotter function to visualize the profile.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.web_thickness instance-attribute

web_thickness: MM

Thickness of the web [mm].

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.width_of_flat_portion property

width_of_flat_portion: MM

Width of the flat (bottom) portion of the U-shaped sheet pile profile [mm].

Determined by intersecting a vertical line through the horizontal middle of the profile's bounding box with the profile boundary, taking the highest y-value among the intersection points, and measuring the horizontal distance between the coordinates sharing that y-value (within a small tolerance).

Based on the classification in table 5-1 in EN 1993-5.

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.multiple_sheets

multiple_sheets(number_of_sheets: int) -> SheetpileUProfile

Return a new U-shaped sheet pile profile instance with a different number of sheets.

Parameters:

  • number_of_sheets (int) –

    Number of sheets to use in the profile.

Returns:

Notes

Multiple sheet functionality is implemented for coordinate-based U-shaped sheet pile profiles. The _polygon property handles multi-sheet geometry by translating each sheet horizontally and generating connectors between sheets. This method validates that number_of_sheets >= 1 and returns a new instance with the updated sheet count.

Source code in blueprints/structural_sections/steel/profile_definitions/sheetpile_u_profile.py
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
def multiple_sheets(self, number_of_sheets: int) -> SheetpileUProfile:
    """Return a new U-shaped sheet pile profile instance with a different number of sheets.

    Parameters
    ----------
    number_of_sheets : int
        Number of sheets to use in the profile.

    Returns
    -------
    SheetpileUProfile
        A new profile instance with the specified number of sheets.

    Notes
    -----
    Multiple sheet functionality is implemented for coordinate-based U-shaped sheet pile profiles.
    The `_polygon` property handles multi-sheet geometry by translating each sheet horizontally
    and generating connectors between sheets. This method validates that `number_of_sheets >= 1`
    and returns a new instance with the updated sheet count.
    """
    if number_of_sheets < 1:
        raise ValueError("Number of sheets must be at least 1")
    return SheetpileUProfile(
        coordinates=self.coordinates,
        web_thickness=self.web_thickness,
        flange_thickness=self.flange_thickness,
        interlocking_ctc=self.interlocking_ctc,
        name=self.name,
        plotter=self.plotter,
        number_of_sheets=number_of_sheets,
    )

structural_sections.steel.profile_definitions.sheetpile_u_profile.SheetpileUProfile.with_corrosion

with_corrosion(corrosion: MM = 0) -> SheetpileUProfile

Return a new U-shaped sheet pile profile instance with corrosion applied.

Parameters:

  • corrosion (MM, default: 0 ) –

    The amount of corrosion to apply to the profile [mm].

Returns:

Notes

Corrosion is applied on both sides of the profile, reducing the thickness of the web and flanges by 2 times the corrosion value. If corrosion from one side is different than the other, it is suggested to apply the average corrosion value.

Source code in blueprints/structural_sections/steel/profile_definitions/sheetpile_u_profile.py
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
def with_corrosion(self, corrosion: MM = 0) -> SheetpileUProfile:
    """Return a new U-shaped sheet pile profile instance with corrosion applied.

    Parameters
    ----------
    corrosion : MM
        The amount of corrosion to apply to the profile [mm].

    Returns
    -------
    SheetpileUProfile
        A new profile instance with the specified corrosion applied.

    Notes
    -----
    Corrosion is applied on both sides of the profile, reducing the thickness of the web and flanges by 2 times the corrosion value.
    If corrosion from one side is different than the other, it is suggested to apply the average corrosion value.
    """
    if corrosion < 0:
        raise ValueError("Corrosion value must be non-negative")

    # Corrosion reduces the thickness of the web and flanges by 2 times the corrosion value (corrosion on both sides)
    new_web_thickness = self.web_thickness - 2 * corrosion
    new_flange_thickness = self.flange_thickness - 2 * corrosion

    # Check if profile has fully corroded
    if new_web_thickness <= FULL_CORROSION_TOLERANCE or new_flange_thickness <= FULL_CORROSION_TOLERANCE:
        raise ValueError("The profile has fully corroded.")

    # Apply corrosion by buffering the polygon inward by the corrosion amount
    corroded_polygon = self._polygon_single_sheet.buffer(-corrosion)

    coordinates: list[tuple[float, float]] = [(x, y) for x, y in corroded_polygon.exterior.coords]
    name = update_name_with_corrosion(self.name, corrosion=corrosion)

    return SheetpileUProfile(
        coordinates=coordinates,
        web_thickness=new_web_thickness,
        flange_thickness=new_flange_thickness,
        interlocking_ctc=self.interlocking_ctc,
        name=name,
        plotter=self.plotter,
        number_of_sheets=self.number_of_sheets,
    )