pyflange.flangesegments
This module contains FlangeSegment classes, which model the mechanical
behavior of a flange sector containig one bolt only.
Currently, the only type of FlangeSegment available is a L-Flange segmen, implementing a polinomial relation between shell pull force and bolt force / bolt moment. Nonetheless, this module has been structured to be easily extensible with other types of FlangeSegment model, such as Polynomial T-Flanges, Multilinear (Petersen) L-Flanges, Multilinear T-Flanges.
The models implemented in this module are based on the following references:
- [1]: Marc Seidel, SGRE TE TF PST: Fatigue design guide for ring flange connections in wind turbine support structures.
Background to proposed changes to IEC 61400-6 Draft version V06
- [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.
- [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
- class pyflange.flangesegments.FlangeSegment
Abstract FlangeSegment class, meant to be extended and not to be instatiated directly.
Each FlangeSegment child class must implement the two methods
.bolt_axial_force(Z)and.bolt_bending_moment(Z).
- class pyflange.flangesegments.PolynomialFlangeSegment
This is a generic FlangeSegment that implements a polynomial relation between shell pull 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 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_restproperty and Fs1 asbolt_force_at_restproperty.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_ULSproperty and Fs2 asbolt_force_at_ultimate_ULSproperty.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_displacementproperty and Fs3 asbolt_force_at_small_displacementproperty.P4 = (Z4, Fs4)representing the gap closure state. Each implementatio of this class should define Z4 asshell_force_at_closed_gapproperty, 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_restproperty.Q2 = (Z2, Ms2)corresponding to P2 as defined above. Each implementation of this class should define Ms2 asbolt_moment_at_tensile_ULSproperty.Q3 = (Z3, Ms3)corresponding to P3 as defined above. Each implementation of this class should define Ms3 asbolt_moment_at_small_displacementproperty.Q4 = (Z4, Ms4)corresponding to P4 as defined above. Each implementatio of this class should define Z4 asshell_force_at_closed_gapproperty, while Ms4 is automatically defined.
- bolt_axial_force(shell_pull)
Bolt axial force due to a given shell pull force Z.
The relation between shell pull force Z and bolt axial force Fs, is a polynomial function, as defined in ref.[1], section 9.
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 shell pull force Z.
The relation between shell pull force Z and bolt bending moment Ms, is a polynomial function, as defined in ref.[1], section 9.
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.
- class pyflange.flangesegments.PolynomialLFlangeSegment(a: float, b: float, s: float, t: float, c: float, R: float, Zg: float, bolt: Bolt, Fv: float, Do: float, Dw: float, gap_height: float, gap_angle: float, E: float = 210000000000.0, G: float = 80770000000.0, s_ratio: float = 1.0)
This class provide a
PolynomialFlangeSegmentimplementation for L-Flanges, based on ref. [1].For this particular case of flange, this class defines the polynomial reference points
P1,P2,P3,P4,Q1,Q2,Q3,Q4and inherits the polynomial functions.bolt_axial_force(Z)and.bolt_bending_moment(Z)from the parent class.The parameters required by this class are:
afloatDistance between inner face of the flange and center of the bolt hole.
bfloatDistance between center of the bolt hole and center-line of the shell.
sfloatShell thickness.
tfloatFlange thickness.
cfloatShell arc length.
RfloatShell outer curvature radius.
ZgfloatLoad applied to the flange segment shell at rest (normally dead weight of tower + RNA, divided by the number of bolts). Negative if compression.
boltBoltBolt object representing the flange segment bolt.
FvfloatApplied bolt preload, after preload losses.
DofloatBolt hole diameter.
DwfloatWasher diameter.
gap_heightfloatMaximum longitudinal gap height.
gap_anglefloatAngle subtended by the gap arc from the flange center.
Efloat[optional]Young modulus of the flange. If omitted, it will be taken equal to 210e9 Pa.
Gfloat[optional]Shear modulus of the flange. If omitted, it will be taken equal to 80.77e9 Pa.
s_ratiofloat[optional]Ratio of bottom shell thickness over s. If omitted, it will be take equal to 1.0, threfore, by default, s_botom = s.
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.- property shell_force_at_rest
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.
- property bolt_force_at_rest
Bolt axial force when no external loads are applied
The bolt force at rest is just the bolt pretension.
- property shell_force_at_small_displacement
Intermediate shell pull, 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.9.2.2.3.
- property bolt_force_at_small_displacement
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.9.2.2.3.
- property bolt_force_at_tensile_ULS
Bolt axial force at tensile failure
Assuming the failure mode B, in the ULS, the bolt is subjected to its maximum tensile capacity.
- property shell_force_at_closed_gap
Force necessary to completely close the imperfection gap