Layers

There are two layered materials commonly used in structural glass design:

  • Glass plys

  • Interlayers

Typically, interlayer materials are used to bond glass layers into a laminate. Common commercial applications use either ionoplast (SGP) or polyvinyl butyral (PVD) as the bonding layers between glass layers.

Glass Plys

It is common for glass layers to be manufactured according to “nominal thickness”. Each nominal thickness has an associated min required thickness (as documented in E1300). To facilitate this common practice a GlassPly can be created using from_nominal_thickness():

from structuralglass import Q_
import structuralglass.layers as lay

t_nom = Q_(6, "mm")
ply = lay.GlassPly.from_nominal_thickness(t_nom)

ply.t_min  # Q_(5.56, "mm")

GlassPly created in this way will have properties for t_nom that are not None.

In order to not limit the user to nominal thicknesses, a GlassPly can be created using from_actual_thickness():

from structuralglass import Q_
import structuralglass.layers as lay

t_act = Q_(5.56, "mm")
ply = lay.GlassPly.from_actual_thickness(t_act)

ply.t_min  # Q_(5.56, "mm")

Interlayers

An Interlayer can be defined in 2 ways:

  • as a static interlayer

  • as a dynamic interlayer

Static Interlayer are not backed by manufactures data. They are static in the sense that the shear modulus is changed manually. A static Interlayer can be created via the from_static() class method.

from structuralglass import Q_
import structuralglass.layers as lay

# Interlayer PVB at 30°C for 1 day load duration
G_pvb = Q_(0.281, "MPa")
t_pvb = Q_(0.89, "mm")
interlayer = lay.Interlayer.from_static(t_pvb, G_pvb)

It is common for interlayer manufacturers to provide material properties in tabulated forms. This is because the laminates are viscoelastic materials and their material properties depend on load duration and temperature. So, the manufacture provides tabulated “effective” data for a load duration and temperature.

Dynamic Interlayer are backed by manufactures tabular data. They are dynamic in the sense that the shear modulus can be changed by providing a new temperature and load duration. For gaps in the manufactures data (for example, the shear modulus is given for 10°C and 20°C and 15°C is set), the tabular data is interpolated linearly. Extrapolation is not done and capped to tabulated values. This functionality is provided by scipy’s interp2d function. A dynamic Interlayer can be created via the from_product_table() class method.

from structuralglass import Q_
import structuralglass.layers as lay

t_pvb = Q_(1.52, "mm")
product_name = "Ionoplast Interlayer NCSEA"
interlayer = lay.Interlayer.from_product_table(t_pvb, product_name)

# set the load duration and temperature
interlayer.duration = Q_(1, "month")
interlayer.temperature = Q_(40, "degC")

# Access the shear modulus of the "Ionoplast Interlayer NCSEA"
interlayer.G    # Q_(3.29, "MPa")

A background registry holds the manufactures tabular data. New data can be added via the register_interlayer_product() function. Data can be removed via the deregister_interlayer_product() function.

from structuralglass import Q_
import structuralglass.layers as lay

name = "product_ID_1"
data = {
    (Q_(20, "degC"), Q_(3, 'sec')): Q_(240, "MPa"),
    (Q_(30, "degC"), Q_(3, 'sec')): Q_(217, "MPa"),
    (Q_(40, "degC"), Q_(3, 'sec')): Q_(151, "MPa"),

    (Q_(20, "degC"), Q_(10, 'min')): Q_(77.0, "MPa"),
    (Q_(30, "degC"), Q_(10, 'min')): Q_(36.2, "MPa"),
    (Q_(40, "degC"), Q_(10, 'min')): Q_(11.8, "MPa"),
}
lay.register_interlayer_product(name, data)

# choose an interlayer thickness
t_pvb = Q_(1.52, "mm")
interlayer = lay.Interlayer.from_product_table(t_pvb, name)

# set the load duration and temperature
interlayer.duration = Q_(5, "min")
interlayer.temperature = Q_(35, "degC")

interlayer.G    # Q(104.15, "MPa")