Skip to main content

Load-bearing Walls

Calculating the linear reactions for a load bearing wall can be a pain in the but if you have anything more than one load source.

This package provides a simple analysis technique (like, the loads go down through the wall) for calculating the consolidated reactions at the bottom of the wall when you have multiple load sources and multiple load directions. No FE here!

This package is intended to be material agnostic and allows the designer to specify behaviour such as the load spread, the spread angle, and if the spread applies to gravity, in-plane lateral, or both.

Point loads and distributed loads can be added to the wall. The designer defines the convention of their loading directions (e.g the gravity direction can be "y" or "Fz" or whatever you want).

How to install

pip install loadbearing_wall

How to use

from loadbearing_wall import LinearWallModel

# Here is the example from the test suite

wall = LinearWallModel(
    height=2.0,
    length=4.0,
    vertical_spread_angle=0.0, # deg
    gravity_dir = "Fz",
    inplane_dir = "Fx",
    magnitude_start_key="w1",
    magnitude_end_key="w2",
    location_start_key="x1",
    location_end_key="x2",
)

Note: You can add distributed loads and point loads at time of initialization (as dicts) or you can use the supplied add_dist_load and add_point_load methods.

Adding loads

# DEAD loads

wall.add_dist_load(
    magnitude_start=10,
    magnitude_end=10,
    location_start=0,
    location_end=4,
    case="D",
    dir="Fz"
)

wall.add_dist_load(
    magnitude_start=8,
    magnitude_end=8,
    location_start=1.5,
    location_end=3.25,
    case="D",
    dir="Fz"
)

# LIVE loads

wall.add_dist_load(
    magnitude_start=15,
    magnitude_end=15,
    location_start=0,
    location_end=4,
    case="L",
    dir="Fz"
)

wall.add_dist_load(
    magnitude_start=17.5,
    magnitude_end=17.5,
    location_start=1.5,
    location_end=3.25,
    case="L",
    dir="Fz"
)

## Wind load (in plane as point load)

wall.add_point_load(
    magnitude=100,
    location=0.0,
    case="W",
    dir="Fx" 
)

Get Reactions

wall.spread_loads() # Execute this first if you are spreading loads
reactions = wall.get_reactions()

Results

In the results below, notice how there are two UDLs of different magnitudes for both the "D" and "L" load cases. This is because the point load spread out and, due to super-position, is added to the applied distributed load.

Note also how the point load is resisted by only 2.0 units of wall at the bottom. If the wall were really long (say 6 or 8 units), and a load is applied at a point, is it reasonable to say that the whole wall is engaged to resist the shear? This would not be the case if the wall had some sort of drag element on top to engage the whole wall. In that case, you would apply a distributed "Fx" load and then the whole wall would resist the shear.

{'Fz': {'D': [{'w1': 9.333334,
    'w2': 9.333334,
    'x1': 0.0,
    'x2': 5.249999999999,
    'case': 'D',
    'dir': 'Fz'},
   {'w1': 6.666667,
    'w2': 6.666667,
    'x1': 5.250000000001,
    'x2': 6.0,
    'case': 'D',
    'dir': 'Fz'}],
  'L': [{'w1': 15.833333,
    'w2': 15.833333,
    'x1': 0.0,
    'x2': 5.249999999999,
    'case': 'L',
    'dir': 'Fz'},
   {'w1': 10.0,
    'w2': 10.0,
    'x1': 5.250000000001,
    'x2': 6.0,
    'case': 'L',
    'dir': 'Fz'}]},
 'Fx': {'W': [{'w1': 50.0,
    'w2': 50.0,
    'x1': 0.0,
    'x2': 2.0,
    'case': 'W',
    'dir': 'Fx'}]}}

Limitations

  • Does not calculate overturning moment on lateral loads (it would be nice if it can calculate the tension/compression forces based on a given d)
  • I am sure there are others but I cannot think of them in the present moment when I am trying to upload this README.md!

Metadata

Release files for loadbearing-wall 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for loadbearing-wall 0.5.0
File Size Uploaded
loadbearing_wall-0.5.0.tar.gz 9.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for loadbearing-wall 0.5.0
File Interpreter ABI Platform
loadbearing_wall-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.7 kB

Release files / loadbearing_wall-0.5.0.tar.gz

Download URL loadbearing_wall-0.5.0.tar.gz
Size 9.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c0df03e6323f84c9df9a804c1c7e08a25cbab0959938719a645276e8b0b20eba
BLAKE2b-256 checksum
How to use checksums
b878fd8f6b0d513d1d2433de9ad278a08d15b7fd6ba94ce6738402e43d638ea2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / loadbearing_wall-0.5.0-py3-none-any.whl

Download URL loadbearing_wall-0.5.0-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d61d67461e5917003ac6819f63a6288f01f8ff143298c35c5944e3328d390443
BLAKE2b-256 checksum
How to use checksums
6bf1628f4a78c4be0bc0ede04f03c5ce464b5b6eeea2550dc45a16fede71f3e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page