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 FlangeSegment class.
This class is meant to be extended and not to be instatiated directly.
Each FlangeSegment child class must implement the two transfer-function methods:
.bolt_axial_force(Z)
, returning the bolt axial force generated by a shell pull force Z.bolt_bending_moment(Z)
, returning the bolt bending moment generted by a shekk pull force Z
PolynomialFlangeSegment
Bases: FlangeSegment
Generic FlangeSegment implementing polynomial transfer functions.
This is a generic FlangeSegment that 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 instead.
The polynomial transfer functions .bolt_axial_force(Z)
and
.bolt_bending_moment(Z)
are defined based on 4 points, through which the
polynomials pass. Those points are implementation specific.
The 4 reference points for the Fs(Z) polynomial are:
-
P1 = (Z1, Fs1)
representing the flange segment state at rest (no loads applied, other than the self-weight). Each implementatio of this class should define Z1 asshell_force_at_rest
property and Fs1 asbolt_force_at_rest
property. -
P2 = (Z2, Fs2)
representing the flange segment ultimate tensile limit state (failure state B). Each implementatio of this class should define Z2 asshell_force_at_tensile_ULS
property and Fs2 asbolt_force_at_ultimate_ULS
property. -
P3 = (Z3, Fs3)
representing the flange segment in small tensile deformation condition. This point is meant to define the initial slope of the polynomial. Each implementatio of this class should define Z3 asshell_force_at_small_displacement
property and Fs3 asbolt_force_at_small_displacement
property. -
P4 = (Z4, Fs4)
representing the gap closure state. Each implementatio of this class should define Z4 asshell_force_at_closed_gap
property, while Fs4 is automatically defined.
The 4 reference points for the Ms(Z) polynomial are:
-
Q1 = (Z1, Ms1)
corresponding to P1 as defined above. Each implementation of this class should define Ms1 asbolt_moment_at_rest
property. -
Q2 = (Z2, Ms2)
corresponding to P2 as defined above. Each implementation of this class should define Ms2 asbolt_moment_at_tensile_ULS
property. -
Q3 = (Z3, Ms3)
corresponding to P3 as defined above. Each implementation of this class should define Ms3 asbolt_moment_at_small_displacement
property. -
Q4 = (Z4, Ms4)
corresponding to P4 as defined above. Each implementatio of this class should define Z4 asshell_force_at_closed_gap
property, while Ms4 is automatically defined.
bolt_axial_force(shell_pull)
Bolt axial force due to a given tower shell force force Z.
The relation between tower shell force Z and bolt axial force Fs, is a polynomial function, as defined in ref.[1], section 8.2 and in ref.[2], section G.4.2.
The passed shell_pull parameter must be either a real number or a numpy.array. If a numpy.array is passed, then the corresponding array of Fs values will be returned.
bolt_bending_moment(shell_pull)
Bolt bending moment due to a given tower shell force force Z.
The relation between tower shell force force Z and bolt bending moment Ms, is a polynomial function, as defined in ref.[1], section 8.3 and in Ref.[2], section G.4.2.
The passed shell_pull parameter must be either a real number or a numpy.array. If a numpy.array is passed, then the corresponding array of Ms values will be returned.
PolynomialLFlangeSegment
dataclass
Bases: PolynomialFlangeSegment
A PolynomialFlangeSegment
implementation for L-Flanges.
The ploynomial model implemented in this class is based on ref. [1] and ref. [2].
For this particular case of flange, this class defines the polynomial
reference points P1
, P2
, P3
, P4
, Q1
, Q2
, Q3
, Q4
and
inherits the polynomial functions .bolt_axial_force(Z)
and
.bolt_bending_moment(Z)
from the parent class.
Parameters: |
|
---|
The given parameters are also available as attributes (e.g. fseg.a
, fseg.Fv
, etc.).
This class is designed to be immutable, therefore modifying the attributes after instantiation is not a good idea. If you need a segment with different attributes, just create a new one.
bolt_force_at_rest
cached
property
Bolt axial force when no external loads are applied.
The bolt force at rest is just the bolt pretension.
bolt_force_at_small_displacement
cached
property
Intermediate bolt pull, between rest and tensile failuse.
This is an auxiliary point that gives the polynomial the right value of initial slope. It is evaluated according to ref. [1], sec.8.2.2.3 and to ref. [2], section G.4.2.
bolt_force_at_tensile_ULS
cached
property
Bolt axial force at tensile failure.
This is the bolt tensile force corresponding to the ultimate
tower shell force (.shell_force_at_rensile_ULS
).
Assuming the failure mode B, in the ULS, the bolt is subjected to its maximum tensile capacity.
In refs. [1] and [2], this value is colled Fs2.
bolt_moment_at_rest
cached
property
Bolt bending moment when no external loads are applied.
bolt_moment_at_small_displacement
cached
property
Intermediate bolt moment, between rest and tensile failuse.
This is the bolt bending moment corresponding to the tower shell force
Z3 (.shell_force_at_small_displacement
).
bolt_moment_at_tensile_ULS
cached
property
Bolt bending moment at tensile failure.
This is the bolt bending moment corresponding to the ultimate
tower shell force (.shell_force_at_rensile_ULS
).
In refs. [1] and [2], this value is colled Ms2.
shell_force_at_closed_gap
cached
property
Shell force necessary to completely close the imperfection gap.
shell_force_at_rest
cached
property
Shell force when no external loads are applied
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, between rest and tensile failure.
This is an auxiliary point that gives the polynomial the right value of initial slope. It is evaluated according to ref. [1], sec.8.2.2.3 and to ref. [2], section G.4.2.
shell_force_at_tensile_ULS
cached
property
Ultimate Limit State tower shell force.
This is tower shell force that brings the flange segment system in its tensile ultimate limit state. It is evaluated according to ref. [1], sec.8.2.2.2 and to ref. [2], section G.4.2, where it is referred to as Z2.
failure_mode(fy_sh, fy_fl, gamma_0=1.1)
Determine the failure mode of this flange.
Parameters: |
|
---|
Returns: |
|
---|
validate(fy_sh, fy_fl, gamma_0=1.1)
Verifies the applicability of the polynomial model.
Check if this L-Flange Segment matches the polynomial model assumptions, that is, if it fails according to failure mode B. If not, it will throw an exceptions.
Parameters: |
|
---|
Returns: |
|
---|
Raises: |
|
---|
PolynomialTFlangeSegment
dataclass
Bases: PolynomialFlangeSegment
A PolynomialFlangeSegment
implementation for T-Flanges.
The ploynomial model implemented in this class is based on ref. [1] and ref. [2].
For this particular case of flange, this class defines the polynomial
reference points P1
, P2
, P3
, P4
, Q1
, Q2
, Q3
, Q4
and
inherits the polynomial functions .bolt_axial_force(Z)
and
.bolt_bending_moment(Z)
from the parent class.
Parameters: |
|
---|
The given parameters are also available as attributes (e.g. fseg.a
, fseg.Fv
, etc.).
This class is designed to be immutable, therefore modifying the attributes after instantiation is not a good idea. If you need a segment with different attributes, just create a new one.
bolt_force_at_rest
cached
property
Bolt axial force when no external loads are applied.
The bolt force at rest is just the bolt pretension.
bolt_force_at_small_displacement
cached
property
Intermediate bolt pull, between rest and tensile failuse.
This is an auxiliary point that gives the polynomial the right value of initial slope. It is evaluated according to ref. [1], sec.8.2.2.3 and to ref. [2], section G.4.2.
bolt_force_at_tensile_ULS
cached
property
Bolt axial force at tensile failure.
This is the bolt tensile force corresponding to the ultimate
tower shell force (.shell_force_at_rensile_ULS
).
Assuming the failure mode B, in the ULS, the bolt is subjected to its maximum tensile capacity.
In refs. [1] and [2], this value is colled Fs2.
bolt_moment_at_rest
cached
property
Bolt bending moment when no external loads are applied.
bolt_moment_at_small_displacement
cached
property
Intermediate bolt moment, between rest and tensile failuse.
This is the bolt bending moment corresponding to the tower shell force
Z3 (.shell_force_at_small_displacement
).
bolt_moment_at_tensile_ULS
cached
property
Bolt bending moment at tensile failure.
This is the bolt bending moment corresponding to the ultimate
tower shell force (.shell_force_at_rensile_ULS
).
In refs. [1] and [2], this value is colled Ms2.
shell_force_at_closed_gap
cached
property
Shell force necessary to completely close the imperfection gap.
shell_force_at_rest
cached
property
Shell force when no external loads are applied.
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, between rest and tensile failure.
This is an auxiliary point that gives the polynomial the right value of initial slope. It is evaluated according to ref. [1], sec.8.2.2.3 and to ref. [2], section G.4.2.
shell_force_at_tensile_ULS
cached
property
Ultimate Limit State tower shell force.
This is the tower shell force that brings the flange segment system in its tensile ultimate limit state. It is evaluated according to ref. [1], sec.8.2.2.2 and to ref. [2], section G.4.2, where it is referred to as Z2.
failure_mode(fy_sh, fy_fl, gamma_0=1.1)
Determine the failure mode of this flange.
Parameters: |
|
---|
Returns: |
|
---|
validate(fy_sh, fy_fl, gamma_0=1.1)
Verifies the applicability of the polynomial model.
Check if this L-Flange Segment matches the polynomial model assumptions, that is, if it fails according to failure mode B. If not, it will throw an exceptions.
Parameters: |
|
---|
Returns: |
|
---|
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)
Evaluates the bolt Markov matrix, given the shell Markov matix.
Parameters: |
|
---|
Returns: |
|
---|
shell_stiffness(shell_radius, shell_thickness, gap_angle)
Axial stiffness of a flange-segment shell.
This function will return the linear interpolation of the flange stiffnesses measured in 2160 different FEA analyses with several values of shell radius, shell thickness and gap angle.
Parameters: |
|
---|
Returns: |
|
---|