4.1.1.3. CSA o86-19, Annex B Fire Design

Limitstates currently contains code for working with glulam and CLT. Objects also exist for representing fire portection, and burning sections according to Annex B of csa o86.

Contains classes for working with fire design, and modifying sections according to CSA o86 Annex B

class GypusmFlatCSA19(portection: list[str] | str)[source]

Represents fire portection that goes on a section that has only one side, such as the bottom of a CLT panel, or a circular column.

The can be one of: ‘exposed’, ‘12.7mm’, ‘15.9mm’, ‘15.9mmx2’, ‘unexposed’.

Parameters

portection (list[str]) – The input list of fire portection.

Return type

None.

class GypusmRectangleCSA19(portection: list[str] | str)[source]

Represents fire portection that goes on a section with multiple sides. Each side is given it’s own potection. The gypsum on each side of the rectangle is speced, using one of: ‘exposed’ , ‘12.7mm’, ‘15.9mm’, ‘15.9mmx2’, ‘unexposed’.

Convention is to start at the top. For a rectangular section fire portection is input in, [top, right, bottom, left]

Parameters

portection (list[str]) – The input list of fire portection.

Return type

None.

Contains classes for working with fire design, and modifying sections according to CSA o86 Annex B.

AssignFirePortection(element: BeamColumn, condition: FireConditions, portection: str)[source]

Assigns the fire portection to an element for some typical conditions. These include:

  • 1 = beamColumn: exposed on 4 sides

  • 2 = beamWithPanel: exposed on all sides except it’s top

  • 3 = panel: exposed only on it’s bottom.

If the desired condition isn’t in the above conditions, a portection object will manually have to be created with GypusmRectangleCSA19 or GypusmFlatCSA19.

Parameters
  • element (object) – The element to assign fire portection to.

  • condition (str) – The condition of the element from a list of typical conditions. The FireCondition Enumeration class can be used, or an integer.

  • portection (str) – The type of gypusm portection to use. One of “exposed”, “12.7mm”, “15.9mm”, “15.9mmx2”.

Return type

None.

class FireConditions(value)[source]

Bases: IntEnum

A class that shows all possible options for fire conditions. These include:

  • 1 = beamColumn: exposed on 4 sides

  • 2 = beamWithPanel: exposed on all sides except it’s top

  • 3 = panel: exposed only on it’s bottom.

beamColumn = 1
beamWithPanel = 2
panel = 3
getBurnDimensions(netFireTime: ndarray[float], Bn: float = 0.7) ndarray[float][source]

Calcualtes the amount burned on each face of a section using B.4 and B.5. The zero-strength layer is culated according to B5, and uses 7mm or a linear interpolation if the burn time is less than 20min Time units are in minutes, length units are in mm.

For a rectangular section fire portection is input in: [top, right, bottom, left]

Parameters
  • netFireTime (ndarray) – An array of the input fire time per face.

  • Bn (TYPE, optional) – The char rate to use, review c.l. B.4.1 to choose. The default is 0.7.

Return type

None.

getBurntCLTSection(section: SectionCLT, FRR: ndarray[float], portection: GypusmFlatCSA19, Bn: float = 0.8) SectionCLT[source]

Returns a burnt rectangular section, with burn dimensions for a rectangle from a input burn time.

Calculates the amount burned on each face of a section using clauses B.4 and B.5. The zero-strength layer is calculated according to B5, and uses 7mm or a linear interpolation if the exposed time is less than 20min Time units are in minutes.

Parameters
  • section (SectionRectangle) – The input rectangular section to burn.

  • FRR (ndarray[float]) – The burn demands in FRR in minutes on each face. For a rectangular section fire portection is input in: [top, right, bottom, left]

  • portection (GypusmRectangleCSA19) – The fire portection object applied to the section.

  • Bn (float, optional) – The char rate for the section. The default is 0.7, which is the notional char rate.

Returns

The burn section with dimensions equal to the output section.

Return type

SectionRectangle

getBurntRectangularDims(burnAmount, width: float, depth: float)[source]

Gets the burn dimensions for a rectangle from a input burn time. Burn time is input in: [top, right, bottom, left]

Calculates the amount burned on each face of a section using clauses B.4 and B.5.

The zero-strength layer is culated according to B5, and uses 7mm or a linear interpolation if the burn time is less than 20min Time units are in minutes, length units are in mm.

Parameters
  • burnAmount (nd.Array) – The amount each face is burned.

  • width (float) – The input section width as a float.

  • depth (float) – The input section depth as a float.

Returns

  • fireWidth (float) – The width of the fire section.

  • fireWidth (float) – The depth of the fire section.

getBurntRectangularSection(section: SectionRectangle, FRR: ndarray[float], portection: GypusmRectangleCSA19, Bn: float = 0.7) SectionRectangle[source]

Returns a burnt rectangular section, with burn dimensions for a rectangle from a input burn time.

Calculates the amount burned on each face of a section using clauses B.4 and B.5. The zero-strength layer is calculated according to B5, and uses 7mm or a linear interpolation if the exposed time is less than 20min Time units are in minutes.

Parameters
  • section (SectionRectangle) – The input rectangular section to burn.

  • FRR (ndarray[float]) – The burn demands in FRR in minutes on each face. For a rectangular section fire portection is input in: [top, right, bottom, left]

  • portection (GypusmRectangleCSA19) – The fire portection object applied to the section.

  • Bn (float, optional) – The char rate for the section. The default is 0.7, which is the notional char rate.

Returns

  • SectionRectangle – The burn section with dimensions equal to the output section.

  • burnAmount (list[float]) – An array of what is burned on each face.

getCLTBurnDims(netBurnTime: ndarray[float], sectionCLT: SectionCLT, Bn: float = 0.8) LayerGroupClt[source]

Gets the burn dimensions for a CLTSection. The CLT section MUST have units of mm.

Calculates the amount burned on each face of a section using clauses B.4 and B.5.

The zero-strength layer is culated according to B5, and uses 7mm or a linear interpolation if the burn time is less than 20min Time units are in minutes, length units are in mm.

Parameters
  • netBurnTime (float) – The burn time on each face in minutes. This is a ndarray with one entry in it for compatibility purposes.

  • width (float) – The input section width as a float.

  • depth (float) – The input section depth as a float.

  • Bn (float, optional) – The char rate for the section. The default is 0.8.

Returns

  • burnLayers (float) – The width of the fire section.

  • fireWidth (float) – The depth of the fire section.

getFRRfromFireConditions(FRR: float, fireCon: FireConditions = 2)[source]

A helper function used to get the appropriate FRR list from a set of typical conditions.

getFireDemands(FRR: float, condition: limitstates.design.csa.o86.c19.annexB.FireConditions | int)[source]

A helper function used to returns the fire demands for common fire conditions. These include:

  • 1 = beamColumn: exposed on 4 sides

  • 2 = beamWithPanel: exposed on all sides except it’s top

  • 3 = panel: exposed only on it’s bottom.

A list can manually be created for the the FRR if the above options do not match the input conditions above.

Parameters
  • condition (str) – The condition of the element from a list of typical conditions. The FireCondition Enumeration class can be used, or an integer.

  • portection (FireConditions, int) – The type of gypusm portection to use. One of “exposed”, “12.7mm”, “15.9mm”, “15.9mmx2”, “unexposed”.

Returns

FRR – The output FRR. For a rectangular section fire portection is input in: [top, right, bottom, left]

Return type

list

getGypsumFirePortection(condition: FireConditions, portection: str) FirePortection[source]

Returns the fire portection class for some typical conditions. These include:

  • 1 = beamColumn: exposed on 4 sides

  • 2 = beamWithPanel: exposed on all sides except it’s top

  • 3 = panel: exposed only on it’s bottom.

If the desired condition isn’t in the above conditions, a portection object will manually have to be created with GypusmRectangleCSA19 or GypusmFlatCSA19.

Parameters
  • condition (str) – The condition of the element from a list of typical conditions. The FireCondition Enumeration class can be used, or an integer.

  • portection (FireConditions, int) – The type of gypusm portection to use. One of “exposed”, “12.7mm”, “15.9mm”, “15.9mmx2”, “unexposed”.

Return type

None.

getNetBurnTime(FRR: ndarray, portection: ndarray) ndarray[float][source]

Given a input FRR demand and portection time, determines the burn time on the section.

For a rectangular section fire portection is input in: [top, right, bottom, left]

Parameters
  • FRR (ndarray) – An array of the fire resistant rating demands in minutes.

  • portection (ndarray) – An array of the fire portection times in minutes.

Returns

burnTime – The output demand on the element for each face

Return type

ndarray

setFireSectionCltCSA(element: BeamColumnGlulamCsa19, FRR: float | list[float] | numpy.ndarray[float], Bn: float = 0.8)[source]

Sets the burnt section for a clt element. By default Bn = 0.8, which assumes that the first CLT layer has been burnt through. Set Bn = 0.65 if the bottom layer isn’t burnt through.

Calculates the amount burned on each face of a section using clauses B.4 and B.5. The zero-strength layer is calculated according to B5, and uses 7mm or a linear interpolation if the exposed time is less than 20min.

Time units is in minutes.

Parameters
  • element (BeamColumnGlulamCsa19) – The Glulam element to burn.

  • FRR (list[float]|ndarray[float]) – For a rectangular section fire portection is input in: [top, right, bottom, left]

  • Bn (float, optional) – The burn rate for the section. The default is 0.7, which is the notional char rate.

Return type

None.

setFireSectionGlulamCSA(element: BeamColumnGlulamCsa19, FRR: list[float] | numpy.ndarray[float], Bn: float = 0.7)[source]

Sets the burnt section for a glulam element. If the element does not have fire portection assigned to it, it is assumed that the section has no fire portection on all sides.

Calculates the amount burned on each face of a section using clauses B.4 and B.5. The zero-strength layer is calculated according to B5, and uses 7mm or a linear interpolation if the exposed time is less than 20min.

Time units is in minutes.

Parameters
  • element (BeamColumnGlulamCsa19) – The Glulam element to burn.

  • FRR (list[float]|ndarray[float]) – For a rectangular section fire portection is input in: [top, right, bottom, left]

  • Bn (float, optional) – The burn rate for the section. The default is 0.7, which is the notional char rate.

  • fireCondition (FireConditions) – The fire condition used. See the FireConditions enumeration for possible values