Python API

GlassPly Class

class structuralglass.layers.GlassPly(t_min, t_nom=None, E=<Quantity(71.7, 'gigapascal')>)

A class to represent a glass ply, its thinkess (nominal and minimum allowable) and mechanical properties.

property E

The elastic modulus as Quantity [pressure].

Raises

ValueError – When set to a value less than 0MPa.

__init__(t_min, t_nom=None, E=<Quantity(71.7, 'gigapascal')>)

Constructor.

Parameters
  • t_min (Quantity [length]) – Min allowable thickness.

  • t_nom (Quantity [length], optional) – Nominal thickness, by default None (if using actual thickness)

  • E (Quantity [pressure], optional) – Elastic modulus, by default 71.7GPa

Raises
classmethod from_actual_thickness(t_act)

Class method to creating a GlassPly with an actual thickness.

Parameters

t_act (Quantity [length]) – Actual thickness.

Returns

Return type

GlassPly

classmethod from_nominal_thickness(t_nom)

Class method to creating a GlassPly with a nominal thickness.

Parameters

t_nom (Quantity [length]) – Nominal thickness.

Returns

Return type

GlassPly

property t_min

The minimum thickness as Quantity [length].

Raises

ValueError – When set to a value less than 0mm.

property t_nom

The nominal thickness as Quantity [length]

Raises

ValueError – When set to a value less than 0mm.

Interlayer Class

class structuralglass.layers.Interlayer(t, *, G=None, G_table=None)

A class to represent a glass interlayer (e.g. PVB or SG), and its mechanical properties. Rate dependent properties can be considered via the use of a product table or registered product name.

property G

The shear modulus as Quantity [pressure]. Interpolates linearly within the domain of the provided table.

Raises

ValueError – If a product table is being used and the reference temperature and/or duration are not set.

__init__(t, *, G=None, G_table=None)

Constructor

Parameters
  • t (Quantity [length]) – Interlayer thickness.

  • G (Quantity [pressure]) – Shear modulus for the case of a static layer, do not provide a G_table.

  • G_table (dict ((Quantity, Quantity): Quantity)) – Shear modulus table for the case of using an interlayer product table. The keys of the dict are tuples of units [temperature] and [time] for the interlayer temperature and load duration, respectively. The values of the dict are of units [pressure] for the shear modulus. Do not provide a G value.

Raises
  • ValueError – If neither G nor G_table are provided.

  • ValueError – If both G and G_table are provided.

property duration

The duration as Quantity [time].

Raises

ValueError – If no product table is provided.

classmethod from_product_table(t, product_name)

Class method for an Interlayer with a product table.

Parameters
  • t (Quantity [length]) – The thickness of the interlayer.

  • product_name (string) – The registred name of the product.

Returns

Return type

Interlayer

classmethod from_static(t, G)

Class method for an Interlayer with a static shear modulus.

Parameters
  • t (Quantity [length]) – The thickness of the interlayer.

  • G (Quantity [pressure]) – The shear modulus.

Returns

Return type

Interlayer

property temperature

The temperature as Quantity [temperature].

Raises

ValueError – If no product table is provided.

Interlayer Registry Functions

structuralglass.layers.register_interlayer_product(product_name, data)

Register new interlayer product table.

Parameters
  • product_name (str) – String identifier

  • data (dict ((Quantity, Quantity): Quantity)) – The tabulated data of the shear modulus that depends on temperature and load duration. The keys of the dict are tuples of units [temp] and [time]. The of the dict are of units [pressure]

Raises

ValueError – If the provided data table is not rectangular. E.g. if shear modulus values are given for (20degC, 3s) and (30degC, 10min), then values for (30degC, 3s) and (20degC, 10min) must also be provided.

structuralglass.layers.deregister_interlayer_product(product_name)

Deregister an existing interlayer product table.

Parameters

product_name (str) – Identifier

GlassType Class

class structuralglass.glass_types.GlassType(stress_surface, stress_edge, duration_factor, surf_factors, coef_variation=0.2)

A class that represents the stress factors in glass.

__init__(stress_surface, stress_edge, duration_factor, surf_factors, coef_variation=0.2)

Constructor.

Parameters
  • stress_surface (Quantity [pressure] i.e. [stress]) – The base allowable surface stress for the glass type.

  • stress_edge (Quantity [pressure] i.e. [stress]) – The base allowable edge stress for the glass type.

  • duration_factor (float) – The duration factor for the glass type.

  • surf_factors (dict (str, float)) – The allowable stress reduction factor for different surface treatments. e.g. “Acid etching” can reduce the allowable stress by 0.5.

  • coef_variation (float, optional) – The coefficient of variation for the glass type. This factor describes the statistical behavior of the failure stress. By default 0.2.

property coef_variation

The coefficient of variation.

design_factor(ratio)

Determines the design factor for the glass type based on a given failure ratio (e.g. 1/1000). This can be used to convert the average breaking stress to the stress corresponding with the failure ratio.

Parameters

ratio (float) – Failure ratio. E.g. 1/1000, 8/1000

Returns

The design factor for the glass type.

Return type

float

property duration_factor

The duration factor.

Raises

ValueError – When the duration factor is set less than 0.

classmethod from_abbr(abbr)

Class method to creating a GlassType from an abbreviation held in the registry.

Parameters

name (str) – Abbreviation.

Returns

Return type

GlassType

Raises

ValueError – When the registry does not contain the abbreviation.

classmethod from_name(name)

Class method to creating a GlassType from an identifier held in the registry.

Parameters

name (str) – Identifier.

Returns

Return type

GlassType

Raises

ValueError – When the registry does not contain the identifier.

load_duration_factor(time=<Quantity(3, 'second')>)

Determines the load duration factor for the glass type.

Parameters

time (Quantity [time], optional) – The load duration, by default 3*ureg.sec

Returns

Load duration factor to apply to the base stress.

Return type

float

prob_breakage_factor(ratio)

Determines the probability of breakage factor for the glass type based on a given failure ratio (e.g. 1/1000).

Parameters

ratio (float) – Failure ratio. E.g. 1/1000, 8/1000

Returns

Probability of breakage factor to apply to the base stress.

Return type

float

property stress_edge

The base allowable edge stress as Quantity [pressure].

Raises

ValueError – When the base allowable edge stress is set to less than 0MPa.

property stress_surface

The base allowable surface stress in Quantity [pressure].

Raises

ValueError – When the base allowable surface stress is set to less than 0MPa.

property surf_factors

The allowable stress reduction factor for different surface treatments as a dict of {str: float}

surf_treat_factor(surf_treat)

Looks up the reduction associated with a surface treatment

Parameters

surf_treat (str) – Looks up the factor for the surface treatment.

Returns

Surface treatment factor to apply to the base stress.

Return type

float

Glass Type Registry Functions

structuralglass.glass_types.register_glass_type(name, stress_surface, stress_edge, duration_factor, coef_variation, surf_factors, *, abbr=None)

Register a new glass type.

Parameters
  • name (str) – Identifier

  • stress_surface (Quantity [pressure] i.e. [stress]) – The base allowable surface stress for the glass type.

  • stress_edge (Quantity [pressure] i.e. [stress]) – The base allowable edge stress for the glass type.

  • duration_factor (float) – The duration factor for the glass type.

  • coef_variation (float, optional) – The coefficient of variation for the glass type. This factor describes the statistical behavior of the failure stress.

  • surf_factors (dict (str, float)) – The allowable stress reduction factor for different surface treatments. e.g. “Acid etching” can reduce the allowable stress by 0.5

  • abbr (str, optional) – Abbreviation, by default None

Raises
  • ValueError – If the name identifier already in use.

  • ValueError – If the abbreviation identifier already in use.

structuralglass.glass_types.deregister_glass_type(name)

Deregister an existing glass type.

Parameters

name (str) – Identifier

structuralglass.glass_types.get_glass_types_data()

Get a deep copy of the registry.

Returns

A dictionary of all the GlassType parameters (as dict), the keys are the identifiers.

Return type

dict (str, dict)

structuralglass.glass_types.get_abbr_data()

Get a deep copy of the abbreviation map.

Returns

A dictionary of the identifiers, the keys are the abbreviation.

Return type

dict (str, str)

GlassLiteEquiv Class

class structuralglass.equiv_thick_models.GlassLiteEquiv(ply)

An abstract class to represent the mechanical behavior of a liminate. Unique formulations of the mechanical behaviour are derived from this class.

property E

The elastic modulus for the formulation as a Quantity [pressure]

_E

Private attribute for the packages elastic modulus

Type

Quantity [pressure]

__init__(ply)

Constructor.

Parameters

ply (list (GlassPly and/or Interlayer)) – The list of glass layers and interlayers that form a laminate.

abstract _calc_equiv_thickness()

Abstract method to determine the equivalent thicknesses.

abstract _determine_package_E()

Abstract method to determine the packages elastic modulus.

_h_efs

dict (GlassPly, Quantity [length]): Private attribute for the effective thickness for stress

_h_efw

dict (GlassPly, Quantity [length]): Private attribute for the effective thickness for displacement.

abstract _validate(plys)

Abstract method to valadate the plys.

Parameters

plys (list (GlassPly and/or Interlayer)) –

Returns

True for a valid formulation. A mesage for an error.

Return type

(bool, str)

property h_efs

The equivalent laminate thickness for the stress in the associated plys as a dict (GlassPly, Quantity [length])

property h_efw

The equivalent laminate thickness for displacement as a Quantity [length]

property ply

A list of glass layers and interlayers that form a laminate as a list (GlassPly and/or Interlayer)

Raises

ValueError – If the provided list fails the formulations validation function.

Monolithic Method

class structuralglass.equiv_thick_models.MonolithicMethod(plys)

A basic/naive mechanical behavior that assumes the laminates effective thickness is the sum of the plys minimum thicknesses. This assumption applies to both stress and deflection effective thickness. This models validity decreases with load duration.

__init__(plys)

Constructor for a liminate’s behaviour.

Parameters

plys (list (GlassPly)) – The list of glass layers that form a laminate.

_calc_equiv_thickness()

Calculates the effective thicknesses.

The sum of the plys minimum thicknesses is used.

_determine_package_E()

Assign the elastic modulus for the formulation.

As the validation function is already checks the elastic modulus of all GlassPly are the same, take the 1st plys elastic modulus.

_validate(plys)

Validate the data in the plys.

  1. Checks the list is only contains type GlassPly.

  2. Checks the elastic modulus of all GlassPly are the same.

Parameters

plys (list (GlassPly)) –

Returns

True for a valid formulation. A mesage for an error.

Return type

(bool, str)

Non-Composite Method

class structuralglass.equiv_thick_models.NonCompositeMethod(plys)

A simple mechanical behavior that assumes the laminates effective thickness is:

  • for deflection: the square root of the minimum thicknesses squared

  • for stress: the cubed root of the minimum thicknesses cubed

This models assumes a non-composite behavior.

__init__(plys)

Constructor for a liminate’s behaviour.

Parameters

plys (list (GlassPly)) – The list of glass layers that form a laminate.

_calc_equiv_thickness()

Calculate the effective thicknesses.

The laminates effective thickness is for:

  • deflection: the square root of the sum of the minimum thicknesses squared

  • stress: cubed root of the sum of the minimum thicknesses cubed

_determine_package_E()

Elastic modulus for the formulation.

As the validation function is already checks the elastic modulus of all GlassPly are the same, take the 1st plys elastic modulus.

_validate(plys)

Method that validates the data in the plys.

  1. Checks the list is only contains type GlassPly

  2. Checks the elastic modulus of all GlassPly are the same.

Parameters

plys (list (GlassPly)) –

Returns

True for a valid formulation. A mesage for an error.

Return type

(bool, str)

Shear Transfer Coefficient Method

class structuralglass.equiv_thick_models.ShearTransferCoefMethod(plys, panel_min_dim)

A mechanical behavior that takes the shear modulus of the laminate into consideration. This method was originally proposed by Bennison-Wolfel and referenced in ASTM E1300. It is only valid for a two glass ply laminate. Ref literature for limitations.

__init__(plys, panel_min_dim)

Constructor for a liminate’s behaviour.

Parameters
  • plys (list (GlassPly and Interlayer)) – The list of glass layers and Interlayers that form a laminate.

  • panel_min_dim (Quantity [length]) – Minimum dimension of the rectangular panel

_calc_equiv_thickness()

Calculate the effective thicknesses.

This method was originally proposed by Bennison-Wolfel and referenced in ASTM E1300.

_determine_package_E()

Method to determine the elastic modulus for the formulation. As the validation function is already checks the elastic modulus of all GlassPly are the same, take the 1st plys elastic modulus.

_validate(plys)

Validate the data in the plys.

  1. This formulation is only valid for plys with that are [GlassPly, Interlayer, GlassPly].

  2. The GlassPly’s must have the same elastic modulus.

Parameters

plys (list (GlassPly and Interlayer)) – The list to be validated.

Returns

True for a valid formulation. A mesage for an error.

Return type

(bool, str)

property beta

The beta value of the formulation. A coefficient dependent on the boundary and loading conditions.

Returns

Return type

float

property panel_min_dim

The minimum dimension of the rectangular panel.

Returns

Return type

Quantity [length]

Raises

ValueError – If the minimum panel dimension is less than 0m.

IGUWindDemands Class

class structuralglass.demands.IGUWindDemands(buildup, wind_load, dim_x, dim_y)

A simplified method for IGU under wind load (short duration). The method uses stiffness based load sharing to distribute the wind load and equivalent thickness to determine stress and deflections.

property LSF

The load share factor for each package as a dict (GlassLiteEquiv, float)

__init__(buildup, wind_load, dim_x, dim_y)

Constructor.

Parameters
  • buildup (list (GlassLiteEquiv)) – The buildup.

  • wind_load (Quantity [pressure]) – The wind load on the IGU.

  • dim_x (Quantity [length]) – The x-dimensions of the plate.

  • dim_y (Quantity [length]) – The y-dimensions of the plate.

Raises
  • ValueError – If buildup contains duplicate objects, to avoid this use deep copy.

  • ValueError – If a mixture of effective thickness models is used. Only one model type should be used.

property buildup

The buildup as a list (GlassLiteEquiv).

property deflection

The deflection as a dict (GlassLiteEquiv, Quantity [pressure])

property dim_x

The dim_x as a Quantity [‘length’].

Raises

ValueError – If the dimension is less than 0 inch/mm

property dim_y

The dim_y as a Quantity [‘length’]

Raises

ValueError – If the dimension is less than 0 inch/mm

solve()

Runs the solver.

property stress

The stress as a dict (GlassPly, Quantity [pressure])

property wind_load

The wind load in Quantity [pressure].