pyflange.flangesegments
Mechanical models of single-bolt flange segments.
This module contains FlangeSegment classes, which model the mechanical
behavior of a flange sector containing one bolt only. The module provides:
Gap: description of the imperfection gap between two flange faces.FlangeSegment: abstract base class defining the transfer-function interface (bolt axial force and bolt bending moment as functions of the shell pull force).PolynomialFlangeSegment: abstract base class implementing the polynomial transfer functions of refs. [1] and [2].PolynomialLFlangeSegmentandPolynomialLFlangeSegmentED2: polynomial L-flange segment models (the latter implementing the modifications expected in IEC 61400-6 ED2).PolynomialTFlangeSegment: polynomial T-flange segment model.bolt_markov_matrix: conversion of a flange bending-moment Markov matrix into a bolt stress Markov matrix, via the segment transfer functions.shell_stiffness: shell stiffness interpolated from tabulated FEA results.
The only types of FlangeSegment currently available are an L-Flange segment and a T-Flange segment, implementing a polynomial relation between tower shell 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.
Units
All parameters must be supplied in a consistent system of units, e.g. meters for lengths, newtons for forces and pascals for stresses. Angles are expressed in radians.
Example
The following example creates an L-flange segment and evaluates the bolt axial force for a given shell pull force.
from math import pi
from pyflange.bolts import StandardMetricBolt, RoundNut
from pyflange.flangesegments import Gap, PolynomialLFlangeSegment
fseg = PolynomialLFlangeSegment(
a=0.150, b=0.122, s=0.054, t=0.172, R=4.0,
central_angle=2*pi/156,
Zg=-115e3, # dead weight per bolt (compression)
bolt=StandardMetricBolt("M80", "10.9", shank_length=0.160, stud=True),
Fv=2.9e6, # bolt preload
Do=0.086, washer=None, nut=RoundNut("M80"),
gap=Gap(height=0.002, angle=pi/6))
Fs = fseg.bolt_axial_force(500e3) # bolt force for a shell pull of 500 kN
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 connections 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: |
|
|---|
| Returns: |
|
|---|
bolt_bending_moment(shell_pull)
abstractmethod
Calculates the bolt bending moment generated by a shell pull force.
| Parameters: |
|
|---|
| Returns: |
|
|---|
Gap
dataclass
A flange gap due to imperfections.
| Attributes: |
|
|---|
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.
Child classes must provide the coordinates of these points (shell force, bolt force and bolt moment) through the abstract properties of this class. The transfer functions are a quadratic polynomial through P1, P2 and P3 in the tensile domain (above the shell force at rest), a quadratic polynomial between P4 and P1 in the compressive domain, and a constant below P4.
_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: |
|
|---|
_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: |
|
|---|
_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: |
|
|---|
_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: |
|
|---|
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: |
|
|---|
| Returns: |
|
|---|
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: |
|
|---|
| Returns: |
|
|---|
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.
The transfer functions are available through the bolt_axial_force and
bolt_bending_moment methods, which accept either a scalar or a NumPy
array of shell pull forces.
| Attributes: |
|
|---|
_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
float: Bolt preload after settlement and plastic losses.
The preload Fv is reduced by the settlement loss (function of DFT
and settlement_factor) and by the plastic loss (PPL * Fv).
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: |
|
|---|
| Returns: |
|
|---|
failure_mode(fy_sh, fy_fl, gamma_0=1.1)
Determines the failure mode of the flange.
The ultimate shell force is evaluated for each of the failure modes A, B, D and E of ref. [2], and the governing mode is the one with the lowest ultimate shell force.
| Parameters: |
|
|---|
| Returns: |
|
|---|
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: |
|
|---|
| Raises: |
|
|---|
PolynomialLFlangeSegmentED2
dataclass
Bases: PolynomialLFlangeSegment
An L-Flange segment modeled as it will be modified in IEC 61400-6 ED2.
This class has the same parameters and interface as PolynomialLFlangeSegment,
but it replaces the a* parameter, the parallel-gap closing force and the
gap stiffness with the formulations that will be introduced in
IEC 61400-6 ED2.
_a_star
cached
property
a* parameter As it will be modified in IEC 61400-6 ED2
_gap_stiffness
cached
property
Stiffness of the design gap.
Returns the gap stiffness as a spring constant per unit of flange-segment arc length, as it will be modified in IEC 61400-6 ED2
_parallel_gap_neutralization_shell_force
cached
property
Force necessary to close a parallel imperfection gap. As it will be modified in IEC 61400-6 ED2
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.
The transfer functions are available through the bolt_axial_force and
bolt_bending_moment methods, which accept either a scalar or a NumPy
array of shell pull forces.
| Attributes: |
|
|---|
_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: |
|
|---|
| Returns: |
|
|---|
failure_mode(fy_sh, fy_fl, gamma_0=1.1)
Determines the failure mode of the flange.
The ultimate shell force is evaluated for each of the failure modes A, B, D and E, and the governing mode is the one with the lowest ultimate shell force.
| Parameters: |
|
|---|
| Returns: |
|
|---|
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: |
|
|---|
| Raises: |
|
|---|
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.
The flange bending moment ranges and means are converted into shell pull
forces acting on the flange segment, and then into minimum and maximum bolt
stresses through the transfer functions of the flange segment. The bolt
stress is the sum of the axial stress and of the bending stress scaled by
bending_factor, evaluated on the bolt thread cross-section.
| Parameters: |
|
|---|
| Returns: |
|
|---|
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.
Values outside the range covered by the dataset are not extrapolated, and
nan is returned instead.
| Parameters: |
|
|---|
| Returns: |
|
|---|