Module for the structural design of steel members.
A structure of classes and functions are provided to assist the basic design
checks for steel structures, based on EN1993-1-1.
The classes included attempt to categorise various calculations into logical
entities like ‘part’ ‘cross-section’ etc.
All the design formulas are defined as standalone functions outside classes so
that they can be easily called independently. The same functions are used
within the classes whenever needed.
Static method for checking if a plate exceeds the upper limit of class
1.
The limits are described in table 5.2 of EN1993-1-1. In that table, the
cases of pure compression and pure bending are treated separately. The
general functions that (rightmost column) are continuous on the pure
bending/pure compression limits so it is sufficient to use only them.
Parameters:
nd_width (float) – Non-dimensional width of the plate, c/(et).
alfa (float in [0, 1]) – Ratio of the compression zone height to the overall height of the
profile.
Static method for checking if a plate exceeds the lower limit of class
4.
The limits are described in table 5.2 of EN1993-1-1. In that table, the
cases of pure compression and pure bending are treated separately. The
general functions that (rightmost column) are continuous on the pure
bending/pure compression limits so it is sufficient to use only them.
Parameters:
nd_width (float) – Non-dimensional width of the plate, c/(et).
alfa (float in [0, 1]) – Ratio of the compression zone height to the overall height of the
profile.
Method performing classification of an RHS profile.
Parameters:
force_gross (bool, optional) – If True, effective width reduction for class 4 cross-sections will
be disregarded. The returned cs_class will still be 4 but the
effective widths will be the full widths (equivalent to a class 3).
Default is False.
This method should be used for creating new RHS profile objects instead
of defining them directly through __init__. The overall geometric
properties are given (width, height, thickness), the material and the
moment utilisation.
The profiled is considered to be fully utilised by M+N, so, the stress
distribution assumed for the classification is a result of the
requested moment and an additional axial load, N, large enough to fully
utilise the cross section.
The additional axial load assumed is compressive or tensile, according
to the given input.
Parameters:
width (float) –
height (float) –
thick (float) –
:param material ” Material: By default, a generic steel S355 is used, with f_u=510 MPa. The
default is currently disabled so if no metarial is given it
crashes.
Parameters:
optional – By default, a generic steel S355 is used, with f_u=510 MPa. The
default is currently disabled so if no metarial is given it
crashes.
m_prc (float, optional) – Moment utilisation to the profile. Since the profile is assumed
fully utilised by the combination of M+N, a given |m_prc|<1 implies
an additional axial load. Positive m_prc induce compressive stress
in the upper flange. Default value is 1, which implies a profile
under pure positive bending.
tensile_axial (bool, optional) – Defines the sign of the axial when abs(m_prc) < 1. Default is False
which implies compression.
force_gross (bool, optional) – Treat class 4 cross sections as a class 3. The argument is passed
to the “cs_classification” method. Default is false.
This method should be used for creating new RHS profile objects instead
of defining them directly through __init__. The overall geometric
properties are given (width, height, thickness), the material and the
loading condition. The loading is described by the utilisation ratio of
the axial resistance, n_prc. If the profile is not fully utilised by
axial loads (n_prc either 1 or -1), an additional positive moment is
considered to full utilisation.
Axial utilisation, n_prc, is positive for tension (N_Ed = N_prc*N_t,Rd)
and negative for compression (N_Ed = N_prc*N_c,Rd). Positive bending
moment generated sigma_min (compression) at the upper flange.
Parameters:
width (float) –
height (float) –
thick (float) –
:param material ” Material: By default, a generic steel S355 is used, with f_u=510 MPa. The
default is currently disabled so if no metarial is given it
crashes.
Parameters:
optional – By default, a generic steel S355 is used, with f_u=510 MPa. The
default is currently disabled so if no metarial is given it
crashes.
n_prc (float in [-1, 1], optional) – Axial utilisation ratio. Negative for compression. By default, a
profile in pure compression is considered, n_prc=-1.
negative_moment (bool, optional) – Defines the sign of the moment when abs(n_prc) < 1. Default is False
which implies sigma_min (compression) in the upper flange.
force_gross (bool, optional) – Treat class 4 cross sections as a class 3. The argument is passed
to the “cs_classification” method. Default is false.
Static method for checking if a plate exceeds the upper limit of class
2.
The limits are described in table 5.2 of EN1993-1-1. In that table, the
cases of pure compression and pure bending are treated separately. The
general functions that (rightmost column) are continuous on the pure
bending/pure compression limits so it is sufficient to use only them.
Parameters:
nd_width (float) – Non-dimensional width of the plate, c/(et).
alfa (float in [0, 1]) – Ratio of the compression zone height to the overall height of the
profile.
Standard designation for bolt grade as a decimal is converted to yield and
ultimate stress values in MPa. In the standard bolt grade designation, the
integer part of the number represents the ultimate stress in MPa/100 and
the decimal part is the yield stress as a percentage of the ultimate (e.g
4.6 is f_u = 400, f_y = 400 * 0.6 = 240).
Calculates the resistance of a plate according to EN1993-1-1 and
EN1993-1-5. The plate is assumed simply supported.
Parameters:
thickness (float) – [mm] Plate thickness
width (float) – [mm] Plate width
f_yield (float) – [MPa] Yield stress
psi (float, optional) – [_] Ratio of the min over max stress for a linear distribution,
(sigma_min / sigma_max)
Default = 1, which implies a uniform distribution
Returns:
[N] Plastic design resistance
Return type:
float
Notes
To be extended to include cantilever plate (outstand members)
Calculates the resistance of a plate according to EN1993-1-1 and
EN1993-1-5. The plate is assumed simply supported.
Parameters:
thickness (float) – [mm] Plate thickness
width (float) – [mm] Plate width
f_yield (float) – [MPa] Yield stress
psi (float, optional) – [_] Ratio of the min over max stress for a linear distribution,
(sigma_min / sigma_max)
Default = 1, which implies a uniform distribution
Returns:
[N] Plastic design resistance
Return type:
float
Notes
To be extended to include cantilever plate (outstand members)
Calculates the bearing capacity of a single bolt on a plate. The distances to the plate edges/other bolts are
described
:param bolt_size:
:param bolt_grade:
:param thickness:
:param steel_grade:
:param f_yield:
:param distances:
:param d_0:
:return:
Calculates the shear resistance of single bolt for one shear plane as given
in table 3.4 of EC3-1-8.
Parameters:
bolt_size (float) – Diameter of the non-threaded part (nominal bolt size e.g. M16 = 16)
bolt_grade (float) – Bolt grade in standard designation format (see documentation of
bolt_grade2stress())
shear_threaded (bool, optional) – Designates if the shear plane is on the threaded portion or not.
Default in False, which implies shearing of the non-threaded portion
gamma_m2 (float, optional) – Safety factor.
Default value is 1.25
The function returns the recommended value of a requested safety factor, as
listed in table 4.1 of EN1993-1-8.
Parameters:
m_value (str {'0', '1', '2', '3', '3,ser', '4', '5', '6,ser', '7', 'u'}) – Description of the requested safety factor. The input can be given as a
number instead of a string, except for the serviceability cases.
nominal (bool, optional) – If False, the function will always return 1. It’s useful for providing
the ability to cancel all safety factors throughout calculations.
Default value is True.
country (str, optional) – The 2 letter country code for the requested safety factor.
Calculates the slenderness of a columne under pure compression.
Euler’s critical load is used.
Parameters:
length (float) – [mm] Column length
area (float) – [mm^2] Cross section area
moi_y (float) – [mm^4] Moment of inertia
kapa_bc (float, optional) – [_] length correction for the effect of the boundary conditions.
Default = 1, which implies simply supported column
e_modulus (float, optional) – [MPa] Modulus of elasticity
Default = 210000., typical value for steel
f_yield (float, optional) – [MPa] yield stress.
Default = 380., brcause this value was used extencively while the
function was being written. To be changed to 235.
Calculates the critical load for flexural buckling of a given column.
A single direction is considered. If more directions are required
(e.g the two principal axes), the function has to be called multiple
times. For torsional mode critical load use n_cr_tor(), and for
flexural-torsional critical load use n_cr_flex_tor()
Parameters:
length (float) – [mm] Column length.
moi_y (float) – [mm^4] Moment of inertia.
kapa_bc (float, optional) – [_] length correction for the effect of the boundary conditions.
Default = 1, which implies simply supported column.
e_modulus (float, optional) – [MPa] Modulus of elasticity.
Default = 210000., typical value for steel.
Calculates the critical load for flexural-torsional buckling of a
column with hinged ends. The returned value is the minimum of the
the three flexural-torsional and the indepedent torsional mode, as
dictated in EN1993-1-1 6.3.1.4 [1]. (for further details, see Notes).
Parameters:
length (float) – [mm] Column length.
area (float) – [mm^2] Cross-sectional area.
moi_y (float) – [mm^4] Moment of inertia around y-axis.
y-axis on the centre of gravity but not necessarily principal.
moi_z (float) – [mm^4] Moment of inertia around z-axis.
z-axis on the centre of gravity but not necessarily principal.
moi_yz (float) – [mm^4] Product of inertia.
moi_torsion (float) – [mm^4] Saint Venant constant.
moi_warp (float) – [mm^6] Torsion constant.
y_sc (float, optional) – [mm] Distance on y-axis of the shear center to the origin.
Default = 0, which implies symmetric profile
z_sc (float, optional) – [mm] Distance on z-axis of the shear center to the origin.
Default = 0, which implies symmetric profile
e_modulus (float, optional) – [MPa] Modulus of elasticity.
Default = 210000., general steel.
poisson (float, optional) – [_] Young’s modulus of elasticity.
Default = 0.3, general steel.
Returns:
[N] Flexural-torsional critical load.
Return type:
float
Notes
The flexural-torsional critical loads are calculated as a combination
of the three independent overall buckling modes:
i) flexural around the major axis,
ii) flexural around the minor axis,
iii) Torsional buckling (around x-axis).
First, the cs-properties are described on the principal axes. Then
the three independent modes are calculated. The combined
flexural-torsional modes are calculated as the roots of a 3rd order
equation, as given in [1], [2]. The minimum of the torsional and the
three combined modes is returned (the two independent flexural modes
are not considered; for critical load of pure flexural mode use
‘n_cr_flex’).
References
..[1]N. S. Trahair, Flexural-torsional buckling of structures, vol. 6. CRC Press, 1993.
..[2]NS. Trahair, MA. Bradford, DA. Nethercot, and L. Gardner, The behaviour and design of steel structures to EC3, 4th edition. London; New York: Taylor & Francis, 2008.
Calculates the critical load for a cylindrical shell under pure
compression and assumes uniform stress distribution. Calculation
according to EN1993-1-6 [1], Annex D.
Calculates the critical load for a cylindrical shell under pure
compression and assumes uniform stress distribution. Calculation
according to EN1993-1-6 [1], Annex D.
Calculates the torsional elastic critical load for a hinged column.
The input values are refering to the principal axes. For flexural
buckling (Euler cases) use n_cr_flex. For the combined
flexural-torsional modes use n_cr_flex_tor.
Parameters:
length (float) – [mm] Column length.
area (float) – [mm^2] Cross-sectional area.
moi_y0 (float) – [mm^4] Moment of inertia around y-axis.
y-axis on the centre of gravity but not necessarily principal.
moi_z0 (float) – [mm^4] Moment of inertia around z-axis.
z-axis on the centre of gravity but not necessarily principal.
moi_torsion (float) – [mm^4] Saint Venant constant.
moi_warp (float) – [mm^6] Torsion constant.
y_0 (float, optional) – [mm] Distance on y-axis of the shear center to the origin.
Default = 0, which implies symmetric profile
z_0 (float, optional) – [mm] Distance on z-axis of the shear center to the origin.
Default = 0, which implies symmetric profile
e_modulus (float, optional) – [MPa] Modulus of elasticity.
Default = 210000., general steel.
poisson (float, optional) – [_] Young’s modulus of elasticity.
Default = 0.3, general steel.
\(x_0, y_0\) : Shear centre coordinates on the principal coordinate system
References
..[1]N. S. Trahair, Flexural-torsional buckling of structures, vol. 6. CRC Press, 1993.
..[2]NS. Trahair, MA. Bradford, DA. Nethercot, and L. Gardner, The behaviour and design of steel structures to EC3, 4th edition. London; New York: Taylor & Francis, 2008.
Calculates the critical stress for a simply supported plate.
Parameters:
thickness (float) – [mm] Plate thickness
width (float) – [mm] Plate width
psi (float, optional) – [_] Ratio of the min over max stress for a linear distribution,
(sigma_min / sigma_max)
Default = 1, which implies a uniform distribution
young (float, optional) – [MPa] Young’s modulus of elasticity. Default value is 210000
poisson (float, optional) – [_] Poisson ratio, default value is 0.3
Returns:
[MPa] Plate critical stress
Return type:
float
Notes
To be extended to include cantilever plate (outstand members)
Calculates the critical load for a cylindrical shell under pure
compression and assumes uniform stress distribution. Calculation
according to EN1993-1-6 [1], Annex D.
Parameters:
thickness (float) – [mm] Shell thickness
radius (float) – [mm] Cylinder radius
length (float) – [mm] Cylnder length
Returns:
List of 2 elements:
a) float, Critical load [N]
b) string, length category
Calculates the critical load for a cylindrical shell under pure
compression and assumes uniform stress distribution. Calculation
according to EN1993-1-6 [1], Annex D.
Parameters:
thickness (float) – [mm] Shell thickness
radius (float) – [mm] Cylinder radius
length (float) – [mm] Cylnder length
Returns:
List of 2 elements:
a) float, Critical load [N]
b) string, length category
Calculates the meridional buckling stress for a cylindrical shell
according to EN 1993-1-6 [1]. Flexural buckling is also checked acc to EN 1993-1-1 [2]
fab_quality (str, optional) – [_] Fabrication quality class. Accepts: ‘fcA’, ‘fcB’, ‘fcC’
The three classes correspond to .006, .010 and .016 times the
width of a dimple on the shell.
Default = ‘fcA’, which implies excelent fabrication
fab_quality (str, optional) – [_] Fabrication quality class. Accepts: ‘fcA’, ‘fcB’, ‘fcC’
The three classes correspond to .006, .010 and .016 times the
width of a dimple on the shell.
Default = ‘fcA’, which implies excelent fabrication
fab_quality (str, optional) – [_] Fabrication quality class. Accepts: ‘fcA’, ‘fcB’, ‘fcC’
The three classes correspond to .006, .010 and .016 times the
width of a dimple on the shell.
Default = ‘fcA’, which implies excelent fabrication
fab_quality (str, optional) – [_] Fabrication quality class. Accepts: ‘fcA’, ‘fcB’, ‘fcC’
The three classes correspond to .006, .010 and .016 times the
width of a dimple on the shell.
Default = ‘fcA’, which implies excelent fabrication
gamma_m1 (int, optional) – [_] Partial safety factor
Default = 1.2 (new suggestion from prEN draft)
Returns the srea to be used for the calculation of shear resistance of a
bolt, either the gross cross-section of the
bolt (circle area) or the reduced area of the threaded part of the bolt.
Parameters:
bolt_size (float) – Bolt’s diameter.
shear_threaded (bool, optional) – Designates if the shear plane is on the threaded portion or not.
Default in False, which implies shearing of the non-threaded portion
Return type:
float
Notes
Currently, the threaded area is based on an average reduction of the shank
area. To be changed to analytic formula.
Perform the resistance calculations for the joint without axial load.
This is useful to allow the calculation of the bending utilisation of
the joint, normalised to the capacity of the same joint for the case of
pure bending.
This method should be used to instantiate new TjointRHS objects.
The joint overall geometry is required, the axial utilisation of the
column (and potentially the beam) and the type of cross sections
(cold-formed or hot-rolled).
Parameters:
column (array-like [float, float, float]) – Width, height and thickness of RHS profiles.
beam (array-like [float, float, float]) – Width, height and thickness of RHS profiles.
weld (float) – Weld radius.
material_col (PySS.steel_design.Material) – Material of the column and the beam profiles respectively. the
f_y_nominal and f_u_nominal are required in the material objects.
material_beam (PySS.steel_design.Material) – Material of the column and the beam profiles respectively. the
f_y_nominal and f_u_nominal are required in the material objects.
n_prc_col (float in {0, 1}) – Axial utilisation ratio of the column and the beam respectively.
n_prc_beam (float in {0, 1}) – Axial utilisation ratio of the column and the beam respectively.
length_c (float) – Member lengths of the column and the beam respectively.
length_b (float) – Member lengths of the column and the beam respectively.
production_type (str, optional) – Type of RHS profiles used. Could be either “cold formed” or “hot
rolled”. By default, “cold formed” is assumed.
Alternative constructor for a T-joint for a given utilisation ratio of
the joint moment resistance, normalised against the moment resistance
of the same joint configuration for zero axial compression of the
column.
Create theoretical polygonal column object for given geometric data.
The constructor calculates properties of the polygonal column object (cross-section props,
resistance, geometric props etc). The calculated data is then used to construct an object.
This is the basic alternative constructor, several other alternative constructors are defined for different
cases of input data. All of the following alternative constructors are calling this one to create the object
after having performed the necessary geometrical pre-calculations.
Parameters:
n_sides (int) – Number of sides of the polygon cross-section.
r_cyl (float) – Radius of the circle circumscribed to the polygon.
thickness (float) – Thickness of the cross-section.
length (float) – Length of the column.
f_y_nominal (float) – Yield stress of the material.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.
a_b (float) – Corner bending radius over thickness ratio.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.
f_y_nominal (float) – Yield stress of the material.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.
f_y_nominal (float) – Yield stress of the material.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.
f_y_nominal (float) – Yield stress of the material.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.
thickness (float) – Thickness of the cross-section.
length (float) – Length of the column.
f_y_nominal (float) – Yield stress of the material.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.
Create theoretical polygonal column object for given equivalent cylinder radius, area and length.
Uses the from_geometry().
Parameters:
n_sides (int) – Number of sides of the polygon cross-section.
r_cyl (float) – Radius of the equivalent cylinder.
area (float) – Cross-sectional area.
length (float) – Length of the column.
f_y_nominal (float) – Yield stress of the material.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.
Create theoretical polygonal column object for given equivalent cylinder radius, thickness and flexural
slenderness.
Uses the from_geometry().
Parameters:
n_sides (int) – Number of sides of the polygon cross-section.
r_cyl (float) – Radius of the equivalent cylinder.
thickness (float) – Thickness of the cross-section.
lambda_flex (float) – Flexural slenderness.
f_y_nominal (float) – Yield stress of the material.
fab_class ({'fcA', 'fcB', 'fcC'}) – Fabrication class, as described in EN 1996-1-6. It is used in the calculation of the buckling resistance of
the cylinder of equal thickness-perimeter.