pyflange.stats
This module contains tools for the probabilistic analysis of flanged connections. In particular, three categories of tools are provided:
- Probability distributions for some flange properties
- Samplers: random realization generators for flange properties
The provided probability distributions are:
- gap_height_distribution
The samplers are just Python generator functions that yield random values. Samplers can be used in a loop or to generate random values via the python next function. The following general-purpose samplers are available:
- sampler
- norm_sampler
- lognorm_sampler
- fatigue_case_sampler
The following samplers are instead specific to IEC 61400-6:2020:
- standard_gap_size_sampler
- standard_PolynomialLFlangeSegment_sampler
- standard_markov_matrix_sampler
- standard_bolt_fatigue_curve_sampler
An example of how to use the above generator to perform a Montecarlo simulation, is given in this example.
The following references are used through this documentation:
[1]IEC 61400-6 AMD1 Background document[2]IEC 61400-6:2020
fatigue_case_sampler(fseg_samp, markov_matrix_samp, fatigue_curve_samp, allowable_damage_samp, SMF=1.0)
Sampler that generates random fatigue cases.
| Parameters: |
|
|---|
| Yields: |
|
|---|
gap_height_distribution(flange_diameter, flange_flatness_tolerance, gap_length)
Evaluates the gap heigh probability distribution according to ref. [1].
| Parameters: |
|
|---|
| Returns: |
|
|---|
Example
The following example, creates a gap distribution and the calculates the 95% quantile of the gap height
from pyflange.gap import gap_height_distribution
D = 7.50 # Flange diameter in meters
u = 0.0014 # Flatness tolerance (non-dimensional)
L = 1.22 # Gap length
gap_dist = gap_height_distribution(D, u, L) # a lognorm distribution object
u95 = gap_dist.ppf(0.95) # PPF is the inverse of CDF. See scipy.stats.lognorm documentation.
lognorm_sampler(mean, cv)
Sampler based on a Log-Normal distribution.
| Parameters: |
|
|---|
| Returns: |
|
|---|
Example
The following example creates a Log-Normal distribution sampler and generates three realizations.
samp = lognorm_sampler(12.0, 0.25) # log-normal sampler sampler with
# mean value 12.0 and CoV = 0.25.
val1 = next(samp) # A random value from the log-normal distribution
val2 = next(samp) # Another random value from the log-normal distribution
val3 = next(samp) # Yet another random value from the log-normal distribution
norm_sampler(mean, cv)
Sampler based on a Normal distribution.
| Parameters: |
|
|---|
| Returns: |
|
|---|
Example
The following example creates a Normal distribution sampler and generates three realizations.
samp = norm_sampler(12.0, 0.25) # normal sampler sampler with mean 12.0
# and CoV = 0.25.
val1 = next(samp) # A random value from the normal distribution
val2 = next(samp) # Another random value from the normal distribution
val3 = next(samp) # Yet another random value from the normal distribution
sampler(random_variable)
Generic distribution-based sampler.
| Parameters: |
|
|---|
| Yields: |
|
|---|
Example
The following example creates a Normal distribution sampler and generates three realizations.
from scipy.stats import norm
ndist = norm(12.0, 2.0) # normal distribution with mean value 12 and standard deviation 2.
samp = sampler(ndist) # sampler based on the ndist distribution
val1 = next(samp) # A random value from ndist distribution
val2 = next(samp) # Another random value from ndist distribution
val3 = next(samp) # Yet another random value from ndist distribution
standard_PolynomialLFlangeSegment_sampler(a, b, s, t, R, central_angle, Zg, bolt, Do, washer, nut, preload_sampler, ppl_sampler, dft_sampler, gap_sampler, tilt_sampler=lognorm_sampler(0.1 * deg, 0.5), E=210000000000.0, G=80770000000.0, s_ratio=1.0, r=0.01, k_shell='interp', settlement_factor=1.0)
A sampler that yields random pyflange PolynomialLFlangeSegment objects.
| Parameters: |
|
|---|
| Yields: |
|
|---|
Example
The following example creates a L-Flange segment sampler and generates three random flange segments.
from math import pi
from metrum.units import mm, um, kN
import pyflange.stats as stats
from pyflange.bolts import StandardMetricBolt, RoundNut
N_BOLTS = 156
fseg_samp = standard_PolynomialLFlangeSegment_sampler (
a = 150*mm, # distance between inner face of the flange and center of the bolt hole
b = 122*mm, # distance between center of the bolt hole and center-line of the shell
s = 54*mm, # shell thickness
t = 172*mm, # flange thickness
R = 4000*mm, # shell outer curvature radius
central_angle = 2*pi / N_BOLTS, # angle subtended by the flange segment
Zg = -18044*kN / N_BOLTS, # load applied to the flange segment shell at rest
# Bolt object representing the flange segment bolt
bolt = StandardMetricBolt("M80", "10.9", shank_length=160*mm,
shank_diameter_ratio=76.1/80, stud=True),
Do = 86*mm, # Bolt hole diameter
washer = None, # Bolt washer
nut = RoundNut("M80"), # Bolt nut
# bolt preload random sampler and preload losses parameters
preload_sampler = stats.norm_sampler(2932.24*kN, 0.03),
ppl_sampler = stats.norm_sampler(0.03, 1/3),
dft_sampler = stats.norm_sampler(250*um, 0.12),
# gap object random sampler
gap_sampler = stats.standard_gap_sampler(
flange_diameter = 8000*mm,
flange_flatness_tolerance = 0.0014, # 1.4 mm/m
gap_angle_sampler = stats.lognorm_sampler(100*deg, 1.0),
gap_shape_factor_sampler = stats.norm_sampler(1.0, 0.15)
),
s_ratio = 1.0, # Ratio of bottom shell thickness over s.
settlement_factor = 0.50 # Settlement reduction for tension tightening.
)
fseg1 = next(fseg_samp) # A random L-Flange segment object
fseg2 = next(fseg_samp) # Another random L-Flange segment object
fseg3 = next(fseg_samp) # Yet another random L-Flange segment object
standard_bolt_fatigue_curve_sampler(bolt_nominal_diameter, mean_stress_factor=1.0, stress_factor_CoV=0.1, DS_ref_mean=62 * MPa)
Sampler that generates random bolt SN curves, according to ref. [2].
| Parameters: |
|
|---|
| Yields: |
|
|---|
standard_gap_sampler(flange_diameter, flange_flatness_tolerance, gap_angle_sampler=lognorm_sampler(100 * deg, 1.0), gap_shape_factor_sampler=norm_sampler(1.0, 0.15), gap_height_cap=2.0)
Sampler that generates random flange gaps according to ref. [1].
| Parameters: |
|
|---|
| Yields: |
|
|---|
Example
The following example creates a standard gap-size sampler and generate three realizations.
# Gap size sampler for 7.5 m falnge with flatness tolerance 1.4 mm/m
samp = standard_gap_size_sampler(7.5, 0.0014)
ga1, gh1 = next(samp) # A random gap-anlge, gap-height pair
ga2, gh2 = next(samp) # Another random gap-anlge, gap-height pair
ga3, gh3 = next(samp) # Yet another random gap-anlge, gap-height pair
standard_markov_matrix_sampler(markov_matrix, mean_range_coeff=1.0, range_CoV=0.12)
Sampler that generates a random markov matrix according to ref [2].
| Parameters: |
|
|---|
| Yields: |
|
|---|