Design gap angles and ED2¶
IEC 61400-6 does not prescribe a single design gap: the gap angles 30°, 60°, 90° and 120° are potentially design-driving, and the one giving the highest fatigue damage is decisive (ref. [2], 6.7.5.3). The design gap height depends on the gap angle. This tutorial runs the four cases for the flange of the L-flange tutorial, first with the AMD1 model and then with the model proposed for ED2.
Download the full script: design_gaps.py
1. Common parameters¶
All the parameters except the gap and the shell stiffness are the same for
the four cases. We store them in a dictionary and pass it to the class with
**common:
from pyflange.bolts import StandardMetricBolt, RoundNut, standard_hole_diameter
from pyflange.fatigue import MarkovMatrix, BoltFatigueAnalysis
D = 8000*mm # tower outer diameter
R = D/2
s = 54*mm
u_tol = 0.0014 # flatness tolerance, 1.4 mm/m
n_bolts = 156
# Parameters shared by all the flange segments of this study
common = dict(
a = 150*mm, b = 122*mm, s = s, t = 172*mm, R = R,
central_angle = 2*pi / n_bolts,
Zg = -18044*kN / n_bolts,
bolt = StandardMetricBolt("M80", "10.9", shank_length=160*mm,
shank_diameter_ratio="pitch", stud=True),
Fv = 2876*kN,
Do = standard_hole_diameter("M80"),
washer = None,
nut = RoundNut("M80"),
tilt_angle = 0.1*deg,
PPL = 0.05, DFT = 300e-6, settlement_factor = 0.5)
mkvm = MarkovMatrix(
range = np.array([ 25, 50, 100, 150, 200, 250, 300, 375, 500, 625]) * 1e6,
mean = np.array([100, 100, 100, 100, 100, 100, 100, 100, 100, 100]) * 1e6,
cycles = np.array([3e8, 1e8, 3e7, 8e6, 2e6, 5e5, 1.5e5, 4e4, 8e3, 1e3]),
duration = 30)
2. AMD1¶
For each angle, the design gap height is the 95% quantile of the AMD1 log-normal distribution, and the shell stiffness is interpolated for that angle:
from pyflange.flangesegments import PolynomialLFlangeSegment, Gap, shell_stiffness
from pyflange.stats import gap_height_distribution
print("AMD1: design gap = 95% quantile of the log-normal distribution")
amd1_damage = {}
for angle_deg in (30, 60, 90, 120):
angle = angle_deg * deg
k_design = gap_height_distribution(D, u_tol, angle * D/2).ppf(0.95)
fseg = PolynomialLFlangeSegment(**common,
gap = Gap(height=k_design, angle=angle),
k_shell = shell_stiffness(R, s, angle))
amd1_damage[angle_deg] = BoltFatigueAnalysis(fseg, mkvm).damage
print(f" gap angle {angle_deg:3d} deg gap height {k_design/mm:4.2f} mm damage {amd1_damage[angle_deg]:.3f}")
governing = max(amd1_damage, key=amd1_damage.get)
print(f" governing gap angle: {governing} deg")
AMD1: design gap = 95% quantile of the log-normal distribution
gap angle 30 deg gap height 0.89 mm damage 0.558
gap angle 60 deg gap height 1.68 mm damage 0.869
gap angle 90 deg gap height 2.75 mm damage 1.337
gap angle 120 deg gap height 4.12 mm damage 1.231
governing gap angle: 90 deg
The design gap heights match Table 2 of ref. [1]. The 30° gap of the L-flange tutorial is not the governing one: with a 90° gap the damage exceeds 1.0 and the flange fails the check.
3. ED2¶
The model proposed for ED2 (ref. [5], 9.7) changes the gap stiffness, the gap closing force (torsional correction) and the lower bound of the parameter a*. The ED2 design gap height is the 75% quantile of a Weibull distribution (ref. [5], 2.2.4):
from pyflange.flangesegments import PolynomialLFlangeSegmentED2
from pyflange.stats import gap_height_distribution_ED2
print("ED2: design gap = 75% quantile of the Weibull distribution")
for angle_deg in (30, 60, 90, 120):
angle = angle_deg * deg
k_design = gap_height_distribution_ED2(D, u_tol, angle * D/2).ppf(0.75)
fseg = PolynomialLFlangeSegmentED2(**common,
gap = Gap(height=k_design, angle=angle),
k_shell = shell_stiffness(R, s, angle))
damage = BoltFatigueAnalysis(fseg, mkvm).damage
print(f" gap angle {angle_deg:3d} deg gap height {k_design/mm:4.2f} mm damage {damage:.3f}")
ED2: design gap = 75% quantile of the Weibull distribution
gap angle 30 deg gap height 0.57 mm damage 0.418
gap angle 60 deg gap height 1.27 mm damage 0.569
gap angle 90 deg gap height 2.16 mm damage 0.760
gap angle 120 deg gap height 3.25 mm damage 0.736
With the smaller ED2 design gaps the same flange passes. Note that the ED2 design gap fractile was selected together with the partial safety factors (ref. [5], 6.7), so a lower damage does not simply mean that ED2 is less conservative.
Warning
The ED2 classes follow the draft background document of 2026-08-04 (ref. [5]) and may change before ED2 is published.
Running the same study from the command line¶
The determ command accepts --gap-angle and --gap-height:
When the gap angle is changed, the shell stiffness is interpolated again for the new angle. See the command line page and Writing case files from Python for batches.