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
- Raises
pint.DimensionalityError – If an input parameters do not meet the
Quantityrequirement.TypeError – The provided nominal thickness is not a
Quantityor None.ValueError – Actual thickness/elastic modulus/nominal thickness cannot be less than zero.
ValueError – The provided nominal thickness could not be found in the lookup.
- classmethod from_actual_thickness(t_act)
Class method to creating a
GlassPlywith an actual thickness.
- classmethod from_nominal_thickness(t_nom)
Class method to creating a
GlassPlywith a nominal thickness.
- 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
Interlayerwith a product table.- Parameters
t (
Quantity[length]) – The thickness of the interlayer.product_name (
string) – The registred name of the product.
- Returns
- Return type
- classmethod from_static(t, G)
Class method for an
Interlayerwith a static shear modulus.- Parameters
- Returns
- Return type
- 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
- 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.
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.
- 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
- 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
- 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.
- prob_breakage_factor(ratio)
Determines the probability of breakage factor for the glass type based on a given failure ratio (e.g. 1/1000).
- 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.
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) – Identifierstress_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.5abbr (
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.
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.
- __init__(ply)
Constructor.
- Parameters
ply (
list(GlassPlyand/orInterlayer)) – 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(GlassPlyand/orInterlayer)) –- Returns
True for a valid formulation. A mesage for an error.
- Return type
- property h_efs
The equivalent laminate thickness for the stress in the associated plys as a
dict(GlassPly,Quantity[length])
- property ply
A list of glass layers and interlayers that form a laminate as a
list(GlassPlyand/orInterlayer)- 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.
- _calc_equiv_thickness()
Calculates the effective thicknesses.
The sum of the plys minimum thicknesses is used.
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.
- _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
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(GlassPlyandInterlayer)) – 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
GlassPlyare the same, take the 1st plys elastic modulus.
- _validate(plys)
Validate the data in the plys.
This formulation is only valid for plys with that are [
GlassPly,Interlayer,GlassPly].The
GlassPly’s must have the same elastic modulus.
- Parameters
plys (
list(GlassPlyandInterlayer)) – The list to be validated.- Returns
True for a valid formulation. A mesage for an error.
- Return type
- property beta
The beta value of the formulation. A coefficient dependent on the boundary and loading conditions.
- Returns
- Return type
- 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.