Joist loads#
Joists are analysed one at a time#
papermodels generates a joist array (e.g. J1.0) from one prototype line (see
Marking up drawings). loadtracer analyses each joist in the array
(J1.0-0, J1.0-1, …) as its own beam. That is accurate, but each beam under
the array then carries one point load per joist, which is hard to compare with
a hand calculation that uses a line load.
Distributed by default#
With joist_loads="distributed" (the default), loadtracer replaces each run of
joist point loads on a member with one distributed load over the run, both
in lt.expanded_pm and in the analysis model. The total load is unchanged.
For each load case, each joist reaction \(P_i\) is divided by the width that joist carries (half the distance to each neighbour) to give a line load intensity \(w_i\). The profile of the intensities along the run sets the shape of the distributed load:
Joist reactions |
Distributed load |
|---|---|
uniform (within |
uniform |
increasing or decreasing along the run |
trapezoidal, fitted through the intensities |
anything else (e.g. peaking mid-run) |
uniform, with a |
In every case, the resultant of the distributed load equals the total of the
joist reactions it replaces. The replaced point loads are kept in
expanded_pm[tag]["loads"]["converted_point_loads"].
A run is broken at a gap of more than 1.5 times the median joist spacing, and needs at least two joists. Joists at the same location stay as point loads.
Comparing against hand calculations#
converted_joist_loads() returns one
row per converted load and load case. It gives the load as a line load
(w_start, w_end) and as an occupancy pressure over a trib width:
import pandas as pd
pd.DataFrame(lt.converted_joist_loads("FB2.0"))
member |
array |
joists |
case |
profile |
start_loc |
end_loc |
w_start |
w_end |
occupancy |
pressure |
trib_width_start |
approximate |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
FB2.0 |
J2.0 |
13 |
D |
uniform |
0.0 |
11.114 |
161.48 |
161.48 |
roof |
15 |
10.77 |
False |
The trib width is the line load divided by the pressure of the joists’
occupancy. It is flagged approximate (with a JoistTribWidthWarning) when
the joists carry more than one occupancy, or loads transferred from other
members. The occupancy used is then the one with the most area on the joists.
When to keep point loads#
Use joist_loads="point" to apply each joist reaction as a point load. The
two give the same total load, but they can give different reactions on a
continuous beam under a joist array whose reactions vary a lot. Example 2
(Example 2: Manually tagged elements) shows a case where this matters.