PySS package

PySS.steel_design module

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.

class PySS.steel_design.BCs(bcs)[source]

Bases: object

Boundary conditions

BC objects are meant to be used within ‘part’ objects and describe the restrained degrees of freedom at the two ends.

__init__(bcs)[source]
classmethod from_hinged()[source]
class PySS.steel_design.CsLoads(axial, shear, moment)[source]

Bases: object

Loads of a part

__init__(axial, shear, moment)[source]
class PySS.steel_design.CsProps(area=None, a_eff=None, xc=None, yc=None, moi_xx=None, moi_yy=None, moi_xy=None, theta_principal=None, moi_1=None, moi_2=None)[source]

Bases: object

Cross-section properties.

Class for the mass properties of cross-sections. The properties can be calculated using the from_cs_sketch() method.

Parameters:
  • area (float) – Cross-sectional area.

  • xc (float) – x coordinate of the gravity center.

  • yc (float) – y coordinate of the gravity center.

  • moi_xx (float) – Moment of inertia around x axis.

  • moi_yy (float) – Moment of inertia around y axis.

  • moi_xy (float) – Polar moment of inertia.

  • theta_principal (float) – Rotation of the principal axes.

  • moi_1 (float) – Moment of inertia around the major axis.

  • moi_2 (float) – Moment of inertia around the minor axis.

__init__(area=None, a_eff=None, xc=None, yc=None, moi_xx=None, moi_yy=None, moi_xy=None, theta_principal=None, moi_1=None, moi_2=None)[source]
classmethod from_cs_sketch(cs_sketch)[source]

Cross-section calculator.

Alternative constructor, calculates mass properties of a given sc sketch and returns a CsProps object.

Parameters:

cs_sketch (CsSketch object) –

Notes

class PySS.steel_design.CsRHS(width=None, height=None, thick=None, b_flat=None, h_flat=None, hcflat=None, r_in=None, r_out=None, area=None, a_eff=None, xc=None, yc=None, moi_xx=None, moi_yy=None, moi_xy=None, theta_principal=None, moi_1=None, moi_2=None, w_pl=None, w_el=None, n_prc=None, psi_cs=None, negative_moment=None, alfa_flange=None, psi_flange=None, alfa_web=None, psi_web=None, material=None, n_rd=None, m_n_rd=None, m_pl_rd=None, m_el_rd=None, m_rd=None, m_prc=None, cs_class=None, nd_width_web=None, nd_width_flange=None)[source]

Bases: CsProps

__init__(width=None, height=None, thick=None, b_flat=None, h_flat=None, hcflat=None, r_in=None, r_out=None, area=None, a_eff=None, xc=None, yc=None, moi_xx=None, moi_yy=None, moi_xy=None, theta_principal=None, moi_1=None, moi_2=None, w_pl=None, w_el=None, n_prc=None, psi_cs=None, negative_moment=None, alfa_flange=None, psi_flange=None, alfa_web=None, psi_web=None, material=None, n_rd=None, m_n_rd=None, m_pl_rd=None, m_el_rd=None, m_rd=None, m_prc=None, cs_class=None, nd_width_web=None, nd_width_flange=None)[source]
static calc_area(hhhh, bbbb, thick)[source]
static calc_cog_y(area, thick, htflat, he2, h_ineff, h_flat, h2um, b_ineff_u, b_ineff_d)[source]
static calc_eff_width(bbbb, thick, psi, epsilon, internal=True)[source]
static calc_flat_width_radius(hhhh, bbbb, thick)[source]
static calc_w_pl(hflat, bflat, thick, h2um, r_in, r_out)[source]
static class1(nd_width, alfa)[source]

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.

Return type:

bool

static class4(nd_width, psi)[source]

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.

Return type:

bool

static classification(nd_width, alfa, psi)[source]
cs_classification(force_gross=False)[source]

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.

classmethod from_bending(width, height, thick, material=None, negative_moment=None, force_gross=False)[source]
classmethod from_compression(width, height, thick, material=None, force_gross=False)[source]

Create a CsRHS for a profile under pure compression.

classmethod from_m_prc(width, height, thick, material=None, m_prc=None, tensile_axial=None, force_gross=False)[source]

Alternative constructor for CsRHS.

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.

classmethod from_n_prc(width, height, thick, material=None, n_prc=None, negative_moment=None, force_gross=False)[source]

Alternative constructor for CsRHS.

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 plastic_allowed(nd_width, alfa)[source]

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.

Return type:

bool

static radius_from_thickness(thickness)[source]
static rhs_moi(bflat, b_eff_u, b_eff_d, hflat, cog_y, he1, he2, h_tension, thick)[source]

Calculate the moment of inertia for a given RHS.

If the RHS is class 4 and effective cross-section reduction is needed, the effective regions have to be given.

class PySS.steel_design.CsSketch(nodes, elem)[source]

Bases: object

Cross-section geometry.

Parameters:
  • nodes (list) – List of points.

  • elem (list) – Element connectivity.

__init__(nodes, elem)[source]
class PySS.steel_design.Geometry(cs_sketch, length, thickness)[source]

Bases: object

Structural element geometry.

Class for the geometric properties of a structural element.

Parameters:
  • cs_sketch (CsSketch object) – Cross-section sketch.

  • length (float) – Member’s length.

__init__(cs_sketch, length, thickness)[source]
class PySS.steel_design.Material(e_modulus, poisson, f_y_nominal, f_y_real=None, f_u_nominal=None, plasticity=None)[source]

Bases: object

Material properties.

Parameters:
  • e_modulus (float) – Modulus of elasticity.

  • poisson (float) – Poisson’s ratio.

  • f_yield (float) – Yield stress

  • plasticity (tuple) – Plasticity table (tuple of stress-plastic strain pairs). By default, no plasticity is considered.

__init__(e_modulus, poisson, f_y_nominal, f_y_real=None, f_u_nominal=None, plasticity=None)[source]
classmethod from_nominal(nominal_strength=None)[source]

Alternative constructor creating a steel material from a given nominal strength.

Parameters:

nominal_strength (str) – Steel quality, given in the form of e.g. “S355”

static plastic_table(nominal=None)[source]

Plasticity tables.

Returns a tuple with plastic stress-strain curve values for different steels given a steel name, e.g ‘S355’

Parameters:

nominal (string [optional]) – Steel name. Default value, ‘S355’

Notes

References

class PySS.steel_design.Part(geometry=None, cs_props=None, material=None, struct_props=None, bc_loads=None)[source]

Bases: object

Structural part.

Class describing a structural part, including geometry, boundary conditions loads and resistance.

__init__(geometry=None, cs_props=None, material=None, struct_props=None, bc_loads=None)[source]
Parameters:
  • geometry (Geometry object, optional) –

  • cs_props (CsProps object, optional) –

  • material (Material object, optional) –

  • struct_props (StructProps object, optional) –

  • bc_loads (BCs object, optional) –

class PySS.steel_design.SimplySupportedPlate(width, thickness, length, f_y, psi=None)[source]

Bases: object

__init__(width, thickness, length, f_y, psi=None)[source]
class PySS.steel_design.StructProps(t_classification=None, p_classification=None, pc_classification=None, lmbda_y=None, lmbda_z=None, n_cr_plate=None, sigma_cr_plate=None, n_pl_rd=None, n_b_rd_plate=None, sigma_b_rd_plate=None, sigma_cr_shell=None, sigma_cr_shell_new=None, lenca=None, lenca_new=None, n_cr_shell=None, n_cr_shell_new=None, sigma_b_rk_shell=None, sigma_b_rk_shell_new=None, n_b_rk_shell=None, n_b_rk_shell_new=None, sigma_b_rd_shell=None, sigma_b_rd_shell_new=None, n_b_rd_shell=None, n_b_rd_shell_new=None, n_cr_platec=None, sigma_cr_platec=None, n_pl_rdc=None, sigma_b_rd_platec=None, n_b_rd_platec=None)[source]

Bases: object

Structural properties of a member.

__init__(t_classification=None, p_classification=None, pc_classification=None, lmbda_y=None, lmbda_z=None, n_cr_plate=None, sigma_cr_plate=None, n_pl_rd=None, n_b_rd_plate=None, sigma_b_rd_plate=None, sigma_cr_shell=None, sigma_cr_shell_new=None, lenca=None, lenca_new=None, n_cr_shell=None, n_cr_shell_new=None, sigma_b_rk_shell=None, sigma_b_rk_shell_new=None, n_b_rk_shell=None, n_b_rk_shell_new=None, sigma_b_rd_shell=None, sigma_b_rd_shell_new=None, n_b_rd_shell=None, n_b_rd_shell_new=None, n_cr_platec=None, sigma_cr_platec=None, n_pl_rdc=None, sigma_b_rd_platec=None, n_b_rd_platec=None)[source]

Main constructor

Parameters:
  • t_classification (float, optional) – Classification of a tube, d/(t^2*e)

  • p_classification (float, optional) – Classification of a plate, c/(t*e)

  • lmbda_y (float, optional) – Flexural slenderness on the strong axis.

  • lmbda_z (float, optional) – Flexural slenderness on the weak axis.

  • n_pl_rd (float, optional) – Plastic axial compression resistance.

  • n_b_rd_shell (float, optional) – Shell buckling resistance

PySS.steel_design.bolt2washer(m_bolt)[source]

Washer diameter.

Return the diameter of the washer for a given bolt diameter. The calculation is based on a function derived from linear regression on ENXXXXXXX[REF].

Parameters:

m_bolt (float) – Bolt diameter

PySS.steel_design.bolt_grade2stress(bolt_grade)[source]

Convert bolt grade to yield and ultimate stress.

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).

Parameters:

bolt_grade (float) –

Returns:

tuple

Return type:

(f_ultimate, f_yield)

PySS.steel_design.bolt_min_dist(d_0)[source]

Minimum bolt spacing.

Parameters:

d_0

Returns:

PySS.steel_design.calc_a_eff(thickness, width, f_yield, psi=None)[source]

Plastic design resistance of a plate.

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)

References

PySS.steel_design.calc_a_eff_new(thickness, width, f_yield, psi=None)[source]

Plastic design resistance of a plate.

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)

References

PySS.steel_design.chi_flex(lmda, b_curve)[source]

Flexural buckling reduction factor.

Claculates the reduction factor, chi, according to EN1993-1-1 6.3.1.2

Parameters:
  • length (float) – [mm] Column length

  • area (float) – [mm^2] Cross section area

  • moi_y (float) – [mm^4] Moment of inertia

  • f_yield (float) – [MPa] Yield stress.

  • b_curve (str) – [_] Name of the buckling curve as obtained from Table 6.2 of [1]. Valid options are {‘a0’, ‘a’, ‘b’, ‘c’, ‘d’}

  • kapa_bc (float, optional) – [_] length correction for the effect of the boundary conditions. Default = 1, which implies simply supported column

Returns:

[_] Reduction factor.

Return type:

float

References

rules for buildings. Brussels: CEN, 2005.

PySS.steel_design.f_b_rd(bolt_size, bolt_grade, thickness, steel_grade, f_yield, distances, d_0)[source]

Connection bearing capacity.

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:

PySS.steel_design.f_v_rd(bolt_size, bolt_grade, shear_threaded=None, gamma_m2=None)[source]

Bolt’s shear resistance.

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

Return type:

float

PySS.steel_design.f_weld_paral()[source]
PySS.steel_design.f_weld_perp(l_w, alpha, f_y, f_u, gamma_m2=None)[source]
PySS.steel_design.fabclass_2_umax(fab_class)[source]

Maximum displacement for a given fabrication class acc. to EC3-1-6.

Parameters:

fab_class ({"fcA", "fcB", "fcC"}) –

PySS.steel_design.gamma_m(m_value, nominal=True, country=None)[source]

Get a safety factor.

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.

PySS.steel_design.imp_factor(b_curve)[source]

Imperfection factor.

Returns the imperfection factor for a given buckling curve. The values are taken from Table 6.1 of EN1993-1-1 [1]

Parameters:

b_curve ({'a0', 'a', 'b', 'c', 'd'}) – [_] Name of the buckling curve as obtained from Table 6.2 of [1].

Returns:

[_] Imperfection factor.

Return type:

float

References

rules for buildings. Brussels: CEN, 2005.

PySS.steel_design.lmbda_flex(length, area, moi_y, f_yield, kapa_bc=None, e_modulus=None)[source]

Flexural slenderness.

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.

Returns:

[_] Member slenderness

Return type:

float

PySS.steel_design.mean_list(numbers)[source]

Mean value.

Calculate the average for a list of numbers.

Parameters:

numbers (list) –

Notes

References

PySS.steel_design.n_b_rd(length, area, moi_y, f_yield, b_curve, kapa_bc=None, gamma_m1=None)[source]

Flexural buckling resistance.

Verifies the resistance of a column against flexural buckling according to EN1993-1-1 6.3.1.1.

Parameters:
  • length (float) – [mm] Column length

  • area (float) – [mm^2] Cross section area

  • moi_y (float) – [mm^4] Moment of inertia

  • f_yield (float) – [MPa] Yield stress.

  • b_curve (str) – [_] Name of the buckling curve as obtained from Table 6.2 of [1]. Valid options are: {‘a0’, ‘a’, ‘b’, ‘c’, ‘d’}

  • kapa_bc (float, optional) – [_] Length correction for the effect of the boundary conditions. Default = 1, which implies simply supported column

  • gamma_m1 (float, optional) – [_] Partial safety factor. Default = 1.

Returns:

[N] Buckling resistance.

Return type:

float

References

rules for buildings. Brussels: CEN, 2005.

PySS.steel_design.n_cr_flex(length, moi_y, kapa_bc=None, e_modulus=None)[source]

Euler’s critical load.

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.

Returns:

[N] Critical load.

Return type:

float

PySS.steel_design.n_cr_flex_tor(length, area, moi_y, moi_z, moi_yz, moi_torsion, moi_warp, y_sc=None, z_sc=None, e_modulus=None, poisson=None)[source]

Flexural-Torsional elastic critical load

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.

PySS.steel_design.n_cr_shell(thickness, radius, length)[source]

Critical compressive load for cylindrical shell.

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:

[N] Critical load

Return type:

float

References

PySS.steel_design.n_cr_shell_new(thickness, radius, length)[source]

Critical compressive load for cylindrical shell.

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:

[N] Critical load

Return type:

float

References

PySS.steel_design.n_cr_tor(length, area, moi_y0, moi_z0, moi_torsion, moi_warp, y_0=None, z_0=None, e_modulus=None, poisson=None)[source]

Torsional elastic critical load

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.

Returns:

[N] Flexural-torsional critical load.

Return type:

float

Notes

The torsional critical load is calculated as:

\[N_{cr, tor} = {GJ + {\pi^2EI_w\over{L^2}}\over{r^2}}\]
Where:

\(E\) : Elasticity modulus

\(G\) : Shear modulus

\(J\) : Torsional constant (Saint Venant)

\(I_w\) : Warping constant

\(r^2=(moi_y + moi_z)/A + x_0^2 + y_0^2\)

\(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.

PySS.steel_design.plate_class(thickness, width, f_yield)[source]

Plate classification.

Returns the class for a given plate, according to EN1993-1-1. Currently works for simply supported plates under pure compression.

Parameters:
  • thickness (float) – [mm] Plate thickness

  • width (float) – [mm] Plate width

  • f_yield (float) – [MPa] Yield stress

Returns:

[_] Class number

Return type:

int

Notes

To be extended to include the rest of the cases of Table 5.3 [1]. Members under combined axial and bending and outstand members.

References

PySS.steel_design.plate_class_new(thickness, width, f_yield)[source]

Plate classification acc.to final draft of EC3-1-1.

Returns the class for a given plate, according to EN1993-1-1. Currently works for simply supported plates under pure compression.

Parameters:
  • thickness (float) – [mm] Plate thickness

  • width (float) – [mm] Plate width

  • f_yield (float) – [MPa] Yield stress

Returns:

[_] Class number

Return type:

int

Notes

To be extended to include the rest of the cases of Table 5.3 [1]. Members under combined axial and bending and outstand members.

References

PySS.steel_design.shell_length_category(radius, thickness, length)[source]

Return the length gategory of a cylinder acc. to EC3-1-6 D.1.2.1

PySS.steel_design.shell_length_category_new(radius, thickness, length)[source]

Return the length gategory of a cylinder acc. to EC3-1-6 D.1.2.1

PySS.steel_design.sigma_cr_plate(thickness, width, psi=None, young=210000, poisson=0.3)[source]

Critical stress of a plate.

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)

References

PySS.steel_design.sigma_x_rcr(thickness, radius, length, kapa_bc=None, e_modulus=None)[source]

Critical meridional stress for cylindrical shell.

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

Return type:

list

References

PySS.steel_design.sigma_x_rcr_new(thickness, radius, length, kapa_bc=None, e_modulus=None)[source]

Critical meridional stress for cylindrical shell.

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

Return type:

list

References

PySS.steel_design.sigma_x_rd(thickness, radius, length, f_y_k, fab_quality=None, gamma_m1=None, flex_kapa=None)[source]

Meridional design buckling stress.

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]

Parameters:
  • thickness (float) – [mm] Shell thickness

  • radius (float) – [mm] Cylinder radius

  • length (float) – [mm] Cylnder length

  • f_y_k (float) – [MPa] Characteristic yield strength

  • 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.1

Returns:

[MPa] Meridional buckling stress

Return type:

float

References

PySS.steel_design.sigma_x_rd_new(thickness, radius, length, f_y_k, fab_quality=None, gamma_m1=None, flex_kapa=None)[source]

Meridional design buckling stress.

Calculates the meridional buckling stress for a cylindrical shell according to the new draft of EN1993-1-6 [1].

Parameters:
  • thickness (float) – [mm] Shell thickness

  • radius (float) – [mm] Cylinder radius

  • length (float) – [mm] Cylnder length

  • f_y_k (float) – [MPa] Characteristic yield strength

  • 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.1

Returns:

[MPa] Meridional buckling stress

Return type:

float

References

PySS.steel_design.sigma_x_rk(thickness, radius, length, f_y_k, fab_quality=None, flex_kapa=None)[source]

Meridional design buckling stress.

Calculates the meridional buckling stress for a cylindrical shell according to EN1993-1-6 [1].

Parameters:
  • thickness (float) – [mm] Shell thickness

  • radius (float) – [mm] Cylinder radius

  • length (float) – [mm] Cylnder length

  • f_y_k (float) – [MPa] Characteristic yield strength

  • 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.1

Returns:

[MPa] Meridional buckling stress

Return type:

float

References

PySS.steel_design.sigma_x_rk_new(thickness, radius, length, f_y_k, fab_quality=None, flex_kapa=None)[source]

Meridional characteristic buckling stress.

Calculates the characteristic meridional buckling stress for a cylindrical shell according to EN1993-1-6 [1].

Parameters:
  • thickness (float) – [mm] Shell thickness

  • radius (float) – [mm] Cylinder radius

  • length (float) – [mm] Cylnder length

  • f_y_k (float) – [MPa] Characteristic yield strength

  • 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:

[MPa] Meridional buckling stress

Return type:

float

References

PySS.steel_design.stress_area(bolt_size, shear_threaded=None)[source]

Shear area of a bolt.

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.

PySS.steel_design.test_csmprc(m_prc)[source]
PySS.steel_design.test_csnprc(n_prc)[source]
PySS.steel_design.test_rhs()[source]
PySS.steel_design.tube_class(thickness, radius, f_yield)[source]

CHS classification.

Returns the class for a given plate, according to EN1993-1-1. Currently works for simply supported plates under pure compression.

Parameters:
  • thickness (float) – [mm] Plate thickness

  • radius (float) – [mm] Tube radius

  • f_yield (float) – [MPa] Yield stress

Returns:

[_] Class number

Return type:

int

Notes

To be extended to include the rest of the cases of Table 5.3 [1]. Members under combined axial and bending and outstand members.

References

PySS.design_of_joints module

class PySS.design_of_joints.TjointRHS(geometry=None, cs_props=None, material=None, struct_props=None, bc_loads=None)[source]

Bases: Part

Properties and calculations of a theoretical (ideal geometry) polygonal column.

__init__(geometry=None, cs_props=None, material=None, struct_props=None, bc_loads=None)[source]
Parameters:
  • geometry (Geometry object, optional) –

  • cs_props (CsProps object, optional) –

  • material (Material object, optional) –

  • struct_props (StructProps object, optional) –

  • bc_loads (BCs object, optional) –

static calc_c_f(material)[source]

Calculate a material reduction factor, acc. to 7.1.1(4) of EN1993-1-8.

static calc_c_f_draft(material)[source]

Calculate the material factor Q_f acc. to the proposals of prEN1993-1-8 tb.9.1.

static calc_f_b_draft(h_c, t_c, e_modulus, f_yield, b_curve)[source]
static calc_m_ip_bf_rd(material, t_c, b_b, b_c, t_b, w_pl_b, h_b)[source]

Brace failure moment resistance acc. to table 7.14 of EN1993-1-8.

static calc_m_ip_bf_rd_draft(material, t_c, b_b, b_c, t_b, w_pl_b, h_b)[source]
static calc_m_ip_cf_rd_draft(beta, n_prc, t_c, h_b, b_c, material)[source]
static calc_m_ip_cw_rd(material, t_c, h_c, h_b, f_y_k)[source]

Chord side wall failure moment resistance acc. to table 7.14 of EN1993-1-8.

static calc_m_ip_cw_rd_draft(beta, n_prc, material, t_c, h_c, h_b, b_curve)[source]
calc_m_prc_jj_draft()[source]

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.

static calc_q_f_draft(beta, n_prc)[source]
classmethod from_geometry(column, beam, weld=None, material_col=None, material_beam=None, n_prc_col=None, n_prc_beam=None, length_c=None, length_b=None, production_type=None, nominal=None)[source]

Main constructor for T-joint objects.

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.

classmethod from_slend_beta(nd_width_col, c_width, nd_width_beam, beta, n_prc_col=None, n_prc_beam=None, material_col=None, material_beam=None, length_c=None, length_b=None)[source]
classmethod from_slend_beta_m_prc_jj(nd_width_col, c_width, nd_width_beam, beta, m_prc_col, n_prc_beam=None, material_col=None, material_beam=None, length_c=None, length_b=None)[source]

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.

PySS.design_of_joints.test_TjointRHS()[source]

PySS.lab_tests module

PySS.rhs_t_joint module

PySS.polygonal module

A class for the Eurocode related structural calculations of an RCPS.

class PySS.polygonal.TheoreticalSpecimen(geometry=None, cs_props=None, material=None, struct_props=None, bc_loads=None)[source]

Bases: Part

Properties and calculations of a theoretical (ideal geometry) polygonal column.

__init__(geometry=None, cs_props=None, material=None, struct_props=None, bc_loads=None)[source]
Parameters:
  • geometry (Geometry object, optional) –

  • cs_props (CsProps object, optional) –

  • material (Material object, optional) –

  • struct_props (StructProps object, optional) –

  • bc_loads (BCs object, optional) –

static behaviour_limit(fy, uu)[source]

Calculate the limit between plated and shell behaviour according to the functions derived in my thesis.

Parameters:
  • fy (float) – Yield stress.

  • uu (float) –

Return type:

PySS.analytic_geometry.Line2D

classmethod from_geometry(n_sides, r_cyl, thickness, length, f_y_nominal, fab_class, a_b=3.0, f_y_real=None)[source]

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.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

classmethod from_pclass_area_flexslend(n_sides, p_classification, area, lambda_flex, f_y_nominal, fab_class, a_b=3.0, f_y_real=None)[source]

Create theoretical polygonal column object for given plate classification, area and flexural slenderness.

Uses the from_geometry().

Parameters:
  • n_sides (int) – Number of sides of the polygon cross-section.

  • p_classification (float) – Facet slenderness, c/(ε*t).

  • area (float) – Cross-sectional area.

  • lambda_flex (float) – Flexural slenderness.

  • f_y (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) – Thickness to bending radius ratio.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

classmethod from_pclass_area_length(n_sides, p_classification, area, length, f_y_nominal, fab_class, a_b=3, f_y_real=None)[source]

Create theoretical polygonal column object for given equivalent cylinder radius, plate slenderness and length.

Uses the from_geometry().

Parameters:
  • n_sides (int) – Number of sides of the polygon cross-section.

  • p_classification (float) – Facet slenderness, c/(ε*t).

  • 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.

  • a_b (float) – Thickness to bending radius ratio.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

classmethod from_pclass_radius_flexslend(n_sides, r_cyl, p_classification, lambda_flex, f_y_nominal, fab_class, a_b=3.0, f_y_real=None)[source]

Create theoretical polygonal column object for given equivalent cylinder radius, plate classification 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.

  • p_classification (float) – Facet slenderness, c/(ε*t).

  • 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.

  • a_b (float) – Thickness to bending radius ratio.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

classmethod from_pclass_radius_length(n_sides, r_cyl, p_classification, length, f_y_nominal, fab_class, a_b=3.0, f_y_real=None)[source]

Create theoretical polygonal column object for given equivalent cylinder radius, plate slenderness 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.

  • p_classification (float) – Facet slenderness, c/(ε*t).

  • 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) – Thickness to bending radius ratio.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

classmethod from_pclass_thickness_length(n_sides, p_classification, thickness, length, f_y_nominal, fab_class, a_b=3.0, f_y_real=None)[source]

Create theoretical polygonal column object for given plate slenderness, thickness and length.

Uses the from_geometry().

Parameters:
  • n_sides (int) – Number of sides of the polygon cross-section.

  • p_classification (float) – Facet slenderness, c/(ε*t).

  • 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) – Thickness to bending radius ratio.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

classmethod from_radius_area_length(n_sides, r_cyl, area, length, f_y_nominal, fab_class, a_b=3, f_y_real=None)[source]

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.

  • a_b (float) – Thickness to bending radius ratio.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

classmethod from_radius_thickness_flexslend(n_sides, r_cyl, thickness, lambda_flex, f_y_nominal, fab_class, a_b=3.0, f_y_real=None)[source]

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.

  • a_b (float) – Thickness to bending radius ratio.

  • f_y_real (float, optional) – Measured yield stress. Default uses the nominal value.

static plate_behaviour(nv, pc, fy, uu)[source]

PySS.parametric module

PySS.scan_3D module

PySS.analytic_geometry module

PySS.fem module

Module contents

Top-level package for PySS.