pyflange.flangesegments

This module contains FlangeSegment classes, which model the mechanical behavior of a flange sector containig one bolt only.

Currently, the only two type of FlangeSegment available are an L-Flange segment and a T-Flange segment, implementing a polinomial relation between tower shell force force and bolt force / bolt moment. Nonetheless, this module has been structured to be easily extensible with other types of FlangeSegment model, such as Multilinear (Petersen) L-Flanges, Multilinear T-Flanges, etc.

The models implemented in this module are based on the following references:

[1]: Marc Seidel, SGRE TE TF PST: IEC 61400-6 AMD1 Background Document Fatigue design for ring flange connsections in wind turbine support structures.

[2]: IEC 61400-6:2020/AMD1 - wIND ENERGY GENERATION SYSTEMS - Part 6: Tower and foundation design requirements - AMENDMENT 1 Draft version 2024-10-01

[3]: Petersen, C.: Nachweis der Betriebsfestigkeit exzentrisch beanspruchter Ringflansch-verbindungen (Fatigue assessment of eccentrically loaded ring flange connections). Stahlbau 67 (1998), S. 191-203. https://onlinelibrary.wiley.com/doi/abs/10.1002/stab.199800690

[4]: Petersen, C.: Stahlbau (Steel construction), 4. Auflage Braunschweig: Wiesbaden: Springer Vieweg 2012. https://link.springer.com/book/10.1007%2F978-3-8348-8610-1

[9]: Tobinaga, I.; Ishihara, T.: A study of action point correction factor for L‐type flanges of wind turbine towers. Wind Energy 21 (2018), p. 801-806. https://doi.org/10.1002/we.2193

FlangeSegment

Bases: ABC

Abstract base class for a flange segment.

This class is meant to be extended and not to be instantiated directly. Each FlangeSegment child class must implement the two transfer-function methods: .bolt_axial_force(Z) and .bolt_bending_moment(Z).

bolt_axial_force(shell_pull) abstractmethod

Calculates the bolt axial force generated by a shell pull force.

Parameters:
  • shell_pull (float or ndarray) –

    The shell pull force Z.

Returns:
  • float or numpy.ndarray: The resulting bolt axial force.

bolt_bending_moment(shell_pull) abstractmethod

Calculates the bolt bending moment generated by a shell pull force.

Parameters:
  • shell_pull (float or ndarray) –

    The shell pull force Z.

Returns:
  • float or numpy.ndarray: The resulting bolt bending moment.

Gap dataclass

A flange gap due to imperfections.

Attributes:
  • height (float) –

    Maximum longitudinal gap height.

  • angle (float) –

    Angle subtended by the gap arc from the flange center.

  • shape_factor (float) –

    Factor accounting for a shape different than sinusoidal.

PolynomialFlangeSegment

Bases: FlangeSegment

A generic FlangeSegment with polynomial transfer functions.

This class implements a polynomial relation between tower shell force Z and bolt axial force Fs or bolt bending moment Ms. It is not meant to be instantiated directly but to be subclassed.

The polynomial transfer functions are defined by 4 reference points: - P1: Flange segment at rest. - P2: Flange segment at ultimate tensile limit state. - P3: Flange segment in small tensile deformation. - P4: Gap closure state.

_compressive_force_polynomial cached property

Polynomial Fs(Z) for the compressive domain.

This getter returns the polynomial Fs(Z) defined by refs. [1] and [2] between point 1 (flange segment at rest) and point 4 (gap closed).

Returns:
  • numpy.polynomial.polynomial.Polynomial: The polynomial for the compressive domain.

_compressive_moment_polynomial cached property

Polynomial Ms(Z) for the compressive domain.

This getter returns the polynomial Ms(Z) defined by refs. [1] and [2] between point 1 (flange segment at rest) and point 4 (gap closed).

Returns:
  • numpy.polynomial.polynomial.Polynomial: The polynomial for the compressive domain.

_tensile_force_polynomial cached property

Polynomial Fs(Z) for the tensile domain.

This getter returns the polynomial Fs(Z) defined by refs. [1] and [2] between point 1 (flange segment at rest) and point 2 (ultimate tensile limit state of the bolt).

Returns:
  • numpy.polynomial.polynomial.Polynomial: The polynomial for the tensile domain.

_tensile_moment_polynomial cached property

Polynomial Ms(Z) for the tensile domain.

This getter returns the polynomial Ms(Z) defined by refs. [1] and [2] between point 1 (flange segment at rest) and point 2 (ultimate tensile limit state of the bolt).

Returns:
  • numpy.polynomial.polynomial.Polynomial: The polynomial for the tensile domain.

bolt_force_at_rest abstractmethod property

Bolt axial force when no external loads are applied (Fs1).

bolt_force_at_small_displacement abstractmethod property

Intermediate bolt axial force (Fs3).

bolt_force_at_tensile_ULS abstractmethod property

Bolt axial force at tensile failure (Fs2).

bolt_moment_at_rest abstractmethod property

Bolt bending moment when no external loads are applied (Ms1).

bolt_moment_at_small_displacement abstractmethod property

Intermediate bolt bending moment (Ms3).

bolt_moment_at_tensile_ULS abstractmethod property

Bolt bending moment at tensile failure (Ms2).

shell_force_at_closed_gap abstractmethod property

Shell force necessary to completely close the imperfection gap (Z4).

shell_force_at_rest abstractmethod property

Shell force when no external loads are applied (Z1).

shell_force_at_small_displacement abstractmethod property

Intermediate tower shell force (Z3).

shell_force_at_tensile_ULS abstractmethod property

Ultimate Limit State tower shell force (Z2).

bolt_axial_force(shell_pull)

Calculates bolt axial force from tower shell force using a polynomial.

The relation is defined as a polynomial function based on ref. [1], section 8.2 and ref. [2], section G.4.2.

Parameters:
  • shell_pull (float or ndarray) –

    The tower shell force Z.

Returns:
  • float or numpy.ndarray: The corresponding bolt axial force Fs.

bolt_bending_moment(shell_pull)

Calculates bolt bending moment from tower shell force using a polynomial.

The relation is defined as a polynomial function based on ref. [1], section 8.3 and ref. [2], section G.4.2.

Parameters:
  • shell_pull (float or ndarray) –

    The tower shell force Z.

Returns:
  • float or numpy.ndarray: The corresponding bolt bending moment Ms.

PolynomialLFlangeSegment dataclass

Bases: PolynomialFlangeSegment

An L-Flange implementation of a PolynomialFlangeSegment.

This class models an L-flange segment using the polynomial model from ref. [1] and [2]. It defines the reference points for the polynomial functions inherited from the parent class.

Attributes:
  • a (float) –

    Distance from inner flange face to bolt hole center.

  • b (float) –

    Distance from bolt hole center to shell center-line.

  • s (float) –

    Shell thickness.

  • t (float) –

    Flange thickness.

  • R (float) –

    Shell outer curvature radius.

  • central_angle (float) –

    Angle subtended by the flange segment arc.

  • Zg (float) –

    Load on the shell at rest (e.g., dead weight). Negative for compression.

  • bolt (Bolt) –

    The bolt in the flange segment.

  • Fv (float) –

    Design preload value before losses.

  • Do (float) –

    Bolt hole diameter.

  • washer (Washer) –

    The washer used. None if no washer.

  • nut (Nut) –

    The nut used.

  • gap (Gap) –

    The flange gap.

  • tilt_angle (float) –

    Flange tilt angle in radians.

  • E (float) –

    Young's modulus of the flange material.

  • G (float) –

    Shear modulus of the flange material.

  • s_ratio (float) –

    Ratio of bottom shell thickness to s.

  • r (float) –

    Radius of the rounding between shell and flange.

  • k_shell ((float, callable, None)) –

    Shell stiffness. Can be a value, a function, or None to use the interpolated formula.

  • PPL (float) –

    Percentage of bolt pretension loss due to plastic strain. Defaults to 0.0.

  • DFT (float) –

    Maximum allowalble dry film thickness of coating applied on the contact area between washers and flange [m]. Defaults to 0.0 m.

  • settlement_factor (float) –

    Factor reducing the amount of bolt settlement, to be taken as 1.0 for torque tightening and 0.5 for tension tightening. Defaults to 1.0.

_bolt_axial_stiffness cached property

The axial stiffness of the bolt.

_bolt_bending_stiffness cached property

The bending stiffness of the bolt.

_flange_axial_stiffness cached property

The axial stiffness of the flange in the thickness direction.

_gap_stiffness cached property

Stiffness of the design gap.

Returns the gap stiffness as a spring constant per unit of flange-segment arc length, calculated according to ref.[1], sec. 8.1 and ref.[2], eq. G.35.

_ideal_bolt_force_at_tensile_ULS cached property

Bolt axial force at tensile failure for a sinusoidal gap shape.

_ideal_shell_force_at_tensile_ULS cached property

Tower shell force at the theoretical state of full prying (Z0).

_parallel_gap_neutralization_shell_force cached property

Force necessary to close a parallel imperfection gap.

_polynomial_initial_slope cached property

Initial slope of the Fs(Z) polynomial.

This slope is calculated according to ref. [1], section 8.2.2.3 and ref. [2], eq. G.53.

_prying_lever_ratio cached property

Lever ratio A, as defined in [9].

_stiffness_correction_factor cached property

Stiffness correction factor (alpha-k).

This factor modifies the segment force to account for the effect of the gap spring, evaluated according to ref. [1], sec. 8.2.2.2 and ref. [2], eq. G.46.

_tilt_neutralization_shell_force cached property

Force that neutralizes the flange tilt (DZ_gap,incl).

This solves equation (G.64) of ref. [2].

_total_gap_neutralization_shell_force cached property

Incremental force to close the imperfection gap (delta-Z_gap,total).

bolt_force_at_rest cached property

Bolt axial force when no external loads are applied (Fs1).

The bolt force at rest is just the bolt pretension.

bolt_force_at_small_displacement cached property

Intermediate bolt axial force (Fs3).

This auxiliary point gives the polynomial the right initial slope, evaluated according to ref. [1], sec. 8.2.2.3 and ref. [2], sec. G.4.2.

bolt_force_at_tensile_ULS cached property

Bolt axial force at tensile failure (Fs2).

This is the bolt's tensile force at the shell's ULS, assuming failure mode B.

bolt_moment_at_rest cached property

Bolt bending moment when no external loads are applied (Ms1).

bolt_moment_at_small_displacement cached property

Intermediate bolt bending moment (Ms3).

bolt_moment_at_tensile_ULS cached property

Bolt bending moment at tensile failure (Ms2).

bolt_preload cached property

Bolt preload after settlment and plastic losses.

gap_angle property

Deprecated. Use gap.angle instead.

gap_height property

Deprecated. Use gap.height instead.

gap_shape_factor property

Deprecated. Use gap.shape_factor instead.

shell_force_at_closed_gap cached property

Shell force necessary to completely close the imperfection gap (Z4).

shell_force_at_rest cached property

Shell force when no external loads are applied (Z1).

The shell loads at rest are normally the self-weights of the structure supported by the flange.

shell_force_at_small_displacement cached property

Intermediate tower shell force (Z3).

This auxiliary point gives the polynomial the right initial slope, evaluated according to ref. [1], sec. 8.2.2.3 and ref. [2], sec. G.4.2.

shell_force_at_tensile_ULS cached property

Ultimate Limit State tower shell force (Z2).

This is the tower shell force that brings the flange segment to its tensile ULS, evaluated according to ref. [1], sec. 8.2.2.2 and ref. [2], sec. G.4.2.

_bolt_moment(Z, Fs)

Calculates the bolt bending moment.

Parameters:
  • Z (float) –

    Shell pull force.

  • Fs (float) –

    Bolt axial force.

Returns:
  • float

    The bolt bending moment.

failure_mode(fy_sh, fy_fl, gamma_0=1.1)

Determines the failure mode of the flange.

Parameters:
  • fy_sh (float) –

    Yield stress of the shell material.

  • fy_fl (float) –

    Yield stress of the flange material.

  • gamma_0 (float, default: 1.1 ) –

    Material factor.

Returns:
  • tuple

    A tuple containing: - str: The failure mode ("A", "B", "D", or "E"). - list: A list of the shell force limits for each failure mode [Zu_A, Zu_B, Zu_D, Zu_E].

validate(fy_sh, fy_fl, gamma_0=1.1)

Verifies the applicability of the polynomial model.

Checks if this L-Flange Segment fails according to failure mode B.

Parameters:
  • fy_sh (float) –

    Yield stress of the shell material.

  • fy_fl (float) –

    Yield stress of the flange material.

  • gamma_0 (float, default: 1.1 ) –

    Material factor.

Raises:
  • ValueError

    If the failure mode is not "B".

PolynomialTFlangeSegment dataclass

Bases: PolynomialFlangeSegment

A T-Flange implementation of a PolynomialFlangeSegment.

This class models a T-flange segment using the polynomial model from ref. [1] and [2]. It defines the reference points for the polynomial functions inherited from the parent class.

Attributes:
  • a (float) –

    Distance from inner flange face to bolt hole center.

  • b (float) –

    Distance from bolt hole center to shell center-line.

  • s (float) –

    Shell thickness.

  • t (float) –

    Flange thickness.

  • R (float) –

    Shell outer curvature radius.

  • central_angle (float) –

    Angle subtended by the flange segment arc.

  • Zg (float) –

    Load on the shell at rest (e.g., dead weight). Negative for compression.

  • bolt (Bolt) –

    The bolt in the flange segment.

  • Fv (float) –

    Design preload value.

  • Do (float) –

    Bolt hole diameter.

  • washer (Washer) –

    The washer used. None if no washer.

  • nut (Nut) –

    The nut used.

  • gap (Gap) –

    The flange gap.

  • tilt_angle (float) –

    Flange tilt angle in radians.

  • E (float) –

    Young's modulus of the flange material.

  • G (float) –

    Shear modulus of the flange material.

  • s_ratio (float) –

    Ratio of bottom shell thickness to s.

  • r (float) –

    Radius of the rounding between shell and flange.

  • k_shell ((float, None)) –

    Shell stiffness. Can be a value or None to use the interpolated formula.

_bolt_axial_stiffness cached property

The axial stiffness of the bolt.

_bolt_bending_stiffness cached property

The bending stiffness of the bolt.

_early_prying_neutralization_shell_force cached property

Increase of the gap closing force due to early prying at the edges.

_flange_axial_stiffness cached property

The axial stiffness of the flange in the thickness direction.

_gap_stiffness cached property

Stiffness of the design gap.

Returns the gap stiffness as a spring constant per unit of flange-segment arc length, calculated according to ref.[1], sec. 9.1.

_ideal_bolt_force_at_tensile_ULS cached property

Bolt axial force at tensile ULS.

_ideal_shell_force_at_tensile_ULS cached property

Ideal shell force at tensile ULS.

_parallel_gap_neutralization_shell_force cached property

Force necessary to close a parallel imperfection gap.

_polynomial_initial_slope cached property

Initial slope of the Fs(Z) polynomial.

This slope is calculated according to ref. [1], eq. 80.

_prying_lever_ratio cached property

Lever ratio A, as defined in [9].

_stiffness_correction_factor cached property

Stiffness correction factor (alpha-k).

This factor modifies the segment force to account for the effect of the gap spring, evaluated according to ref. [1], sec. 9.2.2.2.

_tilt_neutralization_shell_force cached property

Force that neutralizes the flange tilt.

_total_gap_neutralization_shell_force cached property

Total incremental force to close the imperfection gap.

bolt_force_at_rest cached property

Bolt axial force when no external loads are applied (Fs1).

The bolt force at rest is just the bolt pretension.

bolt_force_at_small_displacement cached property

Intermediate bolt axial force (Fs3).

This auxiliary point gives the polynomial the right initial slope, evaluated according to ref. [1], sec. 8.2.2.3 and ref. [2], sec. G.4.2.

bolt_force_at_tensile_ULS cached property

Bolt axial force at tensile failure (Fs2).

This is the bolt's tensile force at the shell's ULS, assuming failure mode A.

bolt_moment_at_rest cached property

Bolt bending moment when no external loads are applied (Ms1).

bolt_moment_at_small_displacement cached property

Intermediate bolt bending moment (Ms3).

bolt_moment_at_tensile_ULS cached property

Bolt bending moment at tensile failure (Ms2).

gap_angle property

Deprecated. Use gap.angle instead.

gap_height property

Deprecated. Use gap.height instead.

gap_shape_factor property

Deprecated. Use gap.shape_factor instead.

shell_force_at_closed_gap cached property

Shell force necessary to completely close the imperfection gap (Z4).

shell_force_at_rest cached property

Shell force when no external loads are applied (Z1).

The shell loads at rest are normally the self-weights of the structure supported by the flange.

shell_force_at_small_displacement cached property

Intermediate tower shell force (Z3).

This auxiliary point gives the polynomial the right initial slope, evaluated according to ref. [1], sec. 8.2.2.3 and ref. [2], sec. G.4.2.

shell_force_at_tensile_ULS cached property

Ultimate Limit State tower shell force (Z2).

This is the tower shell force that brings the flange segment to its tensile ULS, evaluated according to ref. [1], sec. 8.2.2.2 and ref. [2], sec. G.4.2.

_bolt_moment(Z, Fs)

Calculates the bolt bending moment.

Parameters:
  • Z (float) –

    Shell pull force.

  • Fs (float) –

    Bolt axial force.

Returns:
  • float

    The bolt bending moment.

failure_mode(fy_sh, fy_fl, gamma_0=1.1)

Determines the failure mode of the flange.

Parameters:
  • fy_sh (float) –

    Yield stress of the shell material.

  • fy_fl (float) –

    Yield stress of the flange material.

  • gamma_0 (float, default: 1.1 ) –

    Material factor.

Returns:
  • tuple

    A tuple containing: - str: The failure mode ("A", "B", "D", or "E"). - list: A list of the shell force limits for each failure mode [Zu_A, Zu_B, Zu_D, Zu_E].

validate(fy_sh, fy_fl, gamma_0=1.1)

Verifies the applicability of the polynomial model.

Checks if this T-Flange Segment fails according to failure mode A.

Parameters:
  • fy_sh (float) –

    Yield stress of the shell material.

  • fy_fl (float) –

    Yield stress of the flange material.

  • gamma_0 (float, default: 1.1 ) –

    Material factor.

Raises:
  • ValueError

    If the failure mode is not "A".

bolt_markov_matrix(fseg, flange_markov_matrix, bending_factor=0.0, macro_geometric_factor=1.0, mean_factor=1.0, range_factor=1.0, SMF=1.0)

Evaluates the bolt Markov matrix from the shell Markov matrix.

Parameters:
  • fseg (PolynomialFlangeSegment) –

    The flange segment containing the transfer functions. WARNING: Currently only works with PolynomialFlangeSegments.

  • flange_markov_matrix (MarkovMatrix) –

    The Markov matrix of bending moments on the flange.

  • bending_factor (float, default: 0.0 ) –

    Factor for the bending portion of the total stress range.

  • macro_geometric_factor (float, default: 1.0 ) –

    Factor for macro geometric influences, affecting dead weight, mean, and range values. If omitted, it defaults to 1.0.

  • mean_factor (float, default: 1.0 ) –

    Factor for the mean values of the tower's bending moments. If omitted, it defaults to 1.0.

  • range_factor (float, default: 1.0 ) –

    Factor for the range of the tower's bending moments. If omitted, it defaults to 1.0.

  • SMF (float, default: 1.0 ) –

    Stress Multiplication Factor to be applied to bolt Markov matrix stress ranges. If omitted, it defaults to 1.0.

Returns:
  • pyflange.fatigue.MarkovMatrix: The bolt's Markov matrix representing the stress history.

shell_stiffness(shell_radius, shell_thickness, gap_angle)

Calculates the axial stiffness of a flange-segment shell via interpolation.

This function interpolates shell stiffness from a dataset of 2160 FEA results.

Parameters:
  • shell_radius (float) –

    Outer radius of the shell.

  • shell_thickness (float) –

    Thickness of the shell.

  • gap_angle (float) –

    Angular length of the flange gap in radians.

Returns:
  • float

    The interpolated shell stiffness (K_sh).