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)
Sampler that generates random fatigue cases
| Parameters: |
|
|---|
Returns a sampler that yields random pyflange.fatigue.BoltFatigueAnalysis objects.
gap_height_distribution(flange_diameter, flange_flatness_tolerance, gap_length)
Evaluate the gap heigh probability distribution according to ref. [1].
| Parameters: |
|
|---|
| Returns: |
|
|---|
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 a log-normal distribution sampler with given mean value and coefficient of variation.
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 a normal distribution sampler with given mean value and coefficient of variation.
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: |
|
|---|
Returns a generator that, at every next call returns a random realization
of the passed random variable.
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, bolt_preload_ratio, bolt_preload_cov, Do, washer, nut, flange_flatness_tolerance, E=210000000000.0, G=80770000000.0, s_ratio=1.0, r=0.01, k_shell='interp')
A sampler that yields random pyflange PolynomialLFlangeSegment objects.
| Parameters: |
|
|---|
Returns a sampler that yields random L-Flange segment objects, defined by the given deterministic parameters and the following random parameters which are generated according to ref. [1].
preload(float), sampled from a Normal distribution with mean value given by the passed bolt_preload_ratio and CoV given by the passed bolt_preload_cov.gap_angle(float) andgap_height(float), given by the standard_gap_size_generator, created with flange diameter 2R and the given flange_flatness_tolerance.gap_shape_factor(float) sampled from a Normal distribution with mean value 1.0 and CoV=0.15tilt_angle(float) sampled from a log-normal distribution with mean value 0.1 deg and CoV=0.50.
The following example creates a L-Flange segment sampler and generates three random flange segments.
from math import pi
mm = 0.001
kN = 1000
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),
bolt_preload_ratio = 0.750, # Ratio between mean preload Fp and Fy = As*fy.
bolt_preload_cov = 0.03, # Coefficient of variation of the bolt preload.
Do = 86*mm, # Bolt hole diameter
washer = None, # Bolt washer
nut = RoundNut("M80"), # Bolt nut
flange_flatness_tolerance = 0.0014, # 1.4 mm/m
s_ratio = 1.0 # Ratio of bottom shell thickness over s. Default s_botom = s.
)
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)
Sampler that generates random bolt SN curves, according to ref. [2].
| Parameters: |
|
|---|
Returns a sampler that yields pyflange.fatigue.BoltFatigueCurve objects, having a reference stress range randomly generated from a normal distribution with mean value 62 MPa and CoV=0.10.
standard_gap_size_sampler(flange_diameter, flange_flatness_tolerance)
Sampler that generates random flange gaps according to ref. [1]
| Parameters: |
|
|---|
| Returns: |
|
|---|
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, range_CoV=0.12)
Sampler that generates a random markov matrix according to ref [2].
| Parameters: |
|
|---|
Returns a MarkovMatrix sampler that yields random Markov matrices having the same mean load values and number of cycles as the passed markov_matrix parameter, but random ranges multiplied by a random factor extracted by a normal distribution with mean value 1.0 and CoV equal to the passed range_CoV parameter.