Skip to content

InitialLoad#

InitialLoad calculates the first-pass wind loads on roof sheathings, roof coverings, roof-wall connections, openings, and walls. Use it after preprocessing when you need component demands before any failure state changes internal pressure.

Related API: Loads API Planned notebook: loads workflow notebook

Inputs#

  • Building: cheersafe.inventory.Building with PanelCoordinate, NumPanel, ConnectionCoordinate, and NumConnection.
  • WindOrientation: degrees, normally one of the eight directions in Inputs/WindOrientation.json.
  • WindSpeed: mph for the wind-pressure equations.
  • Loaded coefficient datasets: MWFRSCp, CCRoofGCp, and CCWallGCp.
  • Preprocessing outputs: PressureZoneCoordinate, NumZone, PressureZoneArea, and PanelArea.

The class computes qh = 0.00256 * 0.85 * WindSpeed ** 2 during construction regardless of AUTO_EXECUTE_METHODS.

Outputs And Returns#

With automatic execution:

  • pRS: initial roof sheathing load, shape (sum(Building.NumPanel),).
  • pRC: initial roof covering load, shape (sum(Building.NumPanel),). The current implementation returns the same array as pRS.
  • pRWC: initial roof-wall connection load, shape (sum(Building.NumConnection),).
  • pO: opening load, length equal to the total door/window opening count.
  • pW: wall load matrix, shape (4, 3).

Manual methods return one output each: fn_initial_load_rs(), fn_initial_load_rc(), fn_initial_load_rwc(), fn_initial_load_o(), and fn_initial_load_w().

Config Behavior#

With AUTO_LOAD_DATASETS = True, coefficient JSON files load from Inputs/. With it disabled, assign or load the coefficient arrays before calling the fn_initial_load_* methods.

With AUTO_EXECUTE_METHODS = True, preprocessing and all initial loads are calculated during construction. With it disabled, call preprocessing first, then call the initial-load methods. fn_initial_load_w() depends on pRWC, so calculate or assign pRWC before wall loads.

Automatic Example#

from cheersafe.inventory import BuildingInventory
from cheersafe.loads import InitialLoad

building = BuildingInventory(buildings_file_name="BuildingGeometry.json").buildings[0]
loads = InitialLoad(building, WindOrientation=0, WindSpeed=50)

print(loads.qh)
print(loads.pRS.shape, loads.pRWC.shape, loads.pW.shape)

Manual-Control Example#

from cheersafe.config import Config
from cheersafe.inventory import BuildingInventory
from cheersafe.loads import InitialLoad

building = BuildingInventory(buildings_file_name="BuildingGeometry.json").buildings[0]
old_execute = Config.AUTO_EXECUTE_METHODS
Config.AUTO_EXECUTE_METHODS = False
try:
    loads = InitialLoad(building, WindOrientation=0, WindSpeed=50)
    loads.PressureZoneCoordinate, loads.NumZone = loads.fn_pressure_zone_coordinate()
    loads.PressureZoneArea, loads.PanelArea = loads.fn_preprocess_rs()
    loads.pRS = loads.fn_initial_load_rs()
    loads.pRC = loads.fn_initial_load_rc()
    loads.pRWC = loads.fn_initial_load_rwc()
    loads.pO = loads.fn_initial_load_o()
    loads.pW = loads.fn_initial_load_w()
finally:
    Config.AUTO_EXECUTE_METHODS = old_execute