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.BuildingwithPanelCoordinate,NumPanel,ConnectionCoordinate, andNumConnection.WindOrientation: degrees, normally one of the eight directions inInputs/WindOrientation.json.WindSpeed: mph for the wind-pressure equations.- Loaded coefficient datasets:
MWFRSCp,CCRoofGCp, andCCWallGCp. - Preprocessing outputs:
PressureZoneCoordinate,NumZone,PressureZoneArea, andPanelArea.
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 aspRS.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