Skip to main content

A light-weight FEM beam analyzer.

Project description

PlaneSections

A lightweight finite element beam bending library built on libraries like PyNite and OpenSeesPy. The goal of PlaneSections is to make easy-to-use beam anayses, which can be used to quickly document structural calculations.

NOTE: Units for force and length must be applied to the beam in a consistent unit base for FEM. PlaneSections has been design with Metric units in mind in terms of scaling diagrams. For those using imperial units, results will work with a consitent unit basis, but the scale of the digrams may be off.

PlaneSections is a FEM solver! Results are only stored at nodes specified by the user - all intermediate values in plots are linearly interpolated.

Contents

Installation

The default package is installable through pip.

pip -m install planesections

The package with the optional OpenSeesPy dependancy is installable with

pip -m install planesections[opensees]

Features:

2D and 3D beams can be anayzed under the following force types:

  • Point loads
  • Point Moments
  • Line Element loads
  • Linearly varying element loads (2D only).

Diagrams can also be made of 2D beams, but the support types that can be plotted are limited.

Documentation

All major functions and classes are documented on read-the-docs: https://planesections.readthedocs.io/en/latest/

Demo

The PlaneSections can analyze and document beam plots for calcualtions. Below we make a beam, create a diagram of it, then get the output bending moment and shear force diagrams. It's also possible to get rotation, and deflection diagrams but these are not shown here.

import planesections as ps

# Define node locations, and support conditions
L = 5
beam = ps.newEulerBeam(L)

# Define beam and fixities
pinned = [1,1,0]
beam.setFixity(L*0.1, pinned, label = '1')
beam.setFixity(L*0.9, pinned)

# Define loads
Pz = -1
beam.addVerticalLoad(0, Pz, label = 'A')
beam.addVerticalLoad(L*0.5, 2*Pz, label = 'B')
beam.addVerticalLoad(L, Pz, label = 'C')
beam.addDistLoadVertical(0, L, Pz)
beam.addDistLoadVertical(1, L*0.3, 5*Pz)

# Plot the beam diagram
ps.plotBeamDiagram(beam)

# Run the analysis
analysis = ps.PyNiteAnalyzer2D(beam)
analysis.runAnalysis()

# Plot the SFD and BMD
ps.plotShear(beam)
ps.plotMoment(beam)

Coordinates

The coordinant system used for beams is as follows:

Further Examples

See the examples folder for more examples!

Solvers

The opensees solver is included as an optional dependancy. It is significantly faster than the PyNite solver (~100x), but the license is more limited in use. OpenSees allows commercial use of the package, but does not allow resale without permission, so use at your own risk! OpenSees License.

Some restrictions exist for OpenSees license, so this library has been added as an optional dependancy

Status

PlaneSections is almost "feature complete" in terms of it's analysis functionality. The only additional analysis features I might include are:

  • Spring supports
  • Internal hinges
  • Better cross section support These are not slated to be in the next release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

planesections-1.3.7.tar.gz (56.8 kB view details)

Uploaded Source

Built Distribution

planesections-1.3.7-py3-none-any.whl (57.2 kB view details)

Uploaded Python 3

File details

Details for the file planesections-1.3.7.tar.gz.

File metadata

  • Download URL: planesections-1.3.7.tar.gz
  • Upload date:
  • Size: 56.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.13

File hashes

Hashes for planesections-1.3.7.tar.gz
Algorithm Hash digest
SHA256 badbd5799920d57a1dc8a24e73ba769e3609e880943862aebe8ff244f29ece3e
MD5 b5ee7ee241eb18f5ec9b496e4cc6bc3d
BLAKE2b-256 b450752b1e60602c13c46863124e667e0f14694d5fdfd7358edfd772f35a27ce

See more details on using hashes here.

File details

Details for the file planesections-1.3.7-py3-none-any.whl.

File metadata

File hashes

Hashes for planesections-1.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 229925a35e8c653c1c4312f1e6be9f38cb74e0f0cad22ba06df85126d50a9c9f
MD5 2dd0cddca2111acdf6aacdfdc1a8666a
BLAKE2b-256 d3628ce716053399a6f72397b2aad4c8d4c16a2c19f191a98034f51748df6d27

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page