planesections


Nameplanesections JSON
Version 1.4.2 PyPI version JSON
download
home_pageNone
SummaryA light-weight FEM beam analyzer.
upload_time2025-08-11 08:18:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords fem structures beams diagrams
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PlaneSections
<p align="center">
  <img src="https://github.com/cslotboom/planesections/raw/main/doc/img/Beam Image.png" width="500">
</p>

A lightweight finite element beam bending library built on libraries like [PyNite](https://github.com/JWock82/PyNite) and [OpenSeesPy](https://github.com/zhuminjie/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](https://femci.gsfc.nasa.gov/units/index.html).
PlaneSections has been set up 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](https://github.com/cslotboom/planesections#Installation)
* [Features](https://github.com/cslotboom/planesections#Features)
* [Documentation](https://github.com/cslotboom/planesections#Documentation)
* [Demo](https://github.com/cslotboom/planesections#Demo)
* [Coordinates](https://github.com/cslotboom/planesections#Coordinates)
* [Solvers](https://github.com/cslotboom/planesections#Solvers)
* [Work Status](https://github.com/cslotboom/planesections#Status)


## Installation
The default package is installable through pip.
```
pip install planesections

```
The package with the optional OpenSeesPy dependancy is installable with 
```
pip 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.

``` Python

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)
```

<p align="center">
  <img src="https://github.com/cslotboom/planesections/raw/main/doc/img/Beam-Image-2.png" width="500">
</p>
<p align="center">
  <img src="https://github.com/cslotboom/planesections/raw/main/doc/img/Beam-Image-2-SFD.png" width="500">
</p>  
<p align="center">
  <img src="https://github.com/cslotboom/planesections/raw/main/doc/img/Beam-Image-2-BMD.png" width="500">
</p> 

## Coordinates
The coordinant system used for beams is as follows:
<p align="center">
  <img src="https://github.com/cslotboom/planesections/raw/main/doc/img/coords/forces.JPG" width="700">
</p>


## 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.](https://opensees.github.io/OpenSeesDocumentation/developer/license.html)

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.



            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "planesections",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "FEM, structures, beams, diagrams",
    "author": null,
    "author_email": "Christian Slotboom <christian.slotboom@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/b6/c1/3417b3f021c0a24e3d1c6335c212bb0595e9072762409ad7ad0f2bfac1f1/planesections-1.4.2.tar.gz",
    "platform": null,
    "description": "# PlaneSections\r\n<p align=\"center\">\r\n  <img src=\"https://github.com/cslotboom/planesections/raw/main/doc/img/Beam Image.png\" width=\"500\">\r\n</p>\r\n\r\nA lightweight finite element beam bending library built on libraries like [PyNite](https://github.com/JWock82/PyNite) and [OpenSeesPy](https://github.com/zhuminjie/OpenSeesPy).\r\nThe goal of PlaneSections is to make easy-to-use beam anayses, which can be used to quickly document structural calculations.\r\n\r\n\r\n**NOTE:**\r\nUnits for force and length must be applied to the beam in a [consistent unit base for FEM](https://femci.gsfc.nasa.gov/units/index.html).\r\nPlaneSections has been set up 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.\r\n\r\nPlaneSections is a FEM solver! Results are only stored at nodes specified by the user - all intermediate values in plots are linearly interpolated.\r\n\r\n## Contents\r\n* [Installation](https://github.com/cslotboom/planesections#Installation)\r\n* [Features](https://github.com/cslotboom/planesections#Features)\r\n* [Documentation](https://github.com/cslotboom/planesections#Documentation)\r\n* [Demo](https://github.com/cslotboom/planesections#Demo)\r\n* [Coordinates](https://github.com/cslotboom/planesections#Coordinates)\r\n* [Solvers](https://github.com/cslotboom/planesections#Solvers)\r\n* [Work Status](https://github.com/cslotboom/planesections#Status)\r\n\r\n\r\n## Installation\r\nThe default package is installable through pip.\r\n```\r\npip install planesections\r\n\r\n```\r\nThe package with the optional OpenSeesPy dependancy is installable with \r\n```\r\npip install planesections[opensees]\r\n\r\n```\r\n\r\n## Features:\r\n2D and 3D beams can be anayzed under the following force types:\r\n- Point loads\r\n- Point Moments\r\n- Line Element loads\r\n- Linearly varying element loads (2D only).\r\n\r\nDiagrams can also be made of 2D beams, but the support types that can be plotted are limited.\r\n\r\n## Documentation\r\nAll major functions and classes are documented on read-the-docs: https://planesections.readthedocs.io/en/latest/\r\n\r\n## Demo\r\nThe 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.\r\n\r\n``` Python\r\n\r\nimport planesections as ps\r\n\r\n# Define node locations, and support conditions\r\nL = 5\r\nbeam = ps.newEulerBeam(L)\r\n\r\n# Define beam and fixities\r\npinned = [1,1,0]\r\nbeam.setFixity(L*0.1, pinned, label = '1')\r\nbeam.setFixity(L*0.9, pinned)\r\n\r\n# Define loads\r\nPz = -1\r\nbeam.addVerticalLoad(0, Pz, label = 'A')\r\nbeam.addVerticalLoad(L*0.5, 2*Pz, label = 'B')\r\nbeam.addVerticalLoad(L, Pz, label = 'C')\r\nbeam.addDistLoadVertical(0, L, Pz)\r\nbeam.addDistLoadVertical(1, L*0.3, 5*Pz)\r\n\r\n# Plot the beam diagram\r\nps.plotBeamDiagram(beam)\r\n\r\n# Run the analysis\r\nanalysis = ps.PyNiteAnalyzer2D(beam)\r\nanalysis.runAnalysis()\r\n\r\n# Plot the SFD and BMD\r\nps.plotShear(beam)\r\nps.plotMoment(beam)\r\n```\r\n\r\n<p align=\"center\">\r\n  <img src=\"https://github.com/cslotboom/planesections/raw/main/doc/img/Beam-Image-2.png\" width=\"500\">\r\n</p>\r\n<p align=\"center\">\r\n  <img src=\"https://github.com/cslotboom/planesections/raw/main/doc/img/Beam-Image-2-SFD.png\" width=\"500\">\r\n</p>  \r\n<p align=\"center\">\r\n  <img src=\"https://github.com/cslotboom/planesections/raw/main/doc/img/Beam-Image-2-BMD.png\" width=\"500\">\r\n</p> \r\n\r\n## Coordinates\r\nThe coordinant system used for beams is as follows:\r\n<p align=\"center\">\r\n  <img src=\"https://github.com/cslotboom/planesections/raw/main/doc/img/coords/forces.JPG\" width=\"700\">\r\n</p>\r\n\r\n\r\n## Further Examples\r\nSee the examples folder for more examples!\r\n\r\n## Solvers\r\nThe 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.](https://opensees.github.io/OpenSeesDocumentation/developer/license.html)\r\n\r\nSome restrictions exist for OpenSees license, so this library has been added as an optional dependancy\r\n\r\n\r\n## Status\r\nPlaneSections is almost \"feature complete\" in terms of it's analysis functionality. The only additional analysis features I might include are:\r\n- Spring supports\r\n- Internal hinges\r\n- Better cross section support\r\nThese are not slated to be in the next release.\r\n\r\n\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A light-weight FEM beam analyzer.",
    "version": "1.4.2",
    "project_urls": {
        "Documentation": "https://planesections.readthedocs.io/en/latest/",
        "Homepage": "https://github.com/cslotboom/planesections"
    },
    "split_keywords": [
        "fem",
        " structures",
        " beams",
        " diagrams"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b7fec3b9d823a8749911f2257462f8f0083553b208f6020c3ffaa5ad3d049618",
                "md5": "18365a1e7dbfc801130d342e1387690a",
                "sha256": "8660f3f952b5c1a3887cc5f4ca584dcdae368378bad4275c6dde1c128ee7267a"
            },
            "downloads": -1,
            "filename": "planesections-1.4.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "18365a1e7dbfc801130d342e1387690a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 54337,
            "upload_time": "2025-08-11T08:18:29",
            "upload_time_iso_8601": "2025-08-11T08:18:29.422891Z",
            "url": "https://files.pythonhosted.org/packages/b7/fe/c3b9d823a8749911f2257462f8f0083553b208f6020c3ffaa5ad3d049618/planesections-1.4.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b6c13417b3f021c0a24e3d1c6335c212bb0595e9072762409ad7ad0f2bfac1f1",
                "md5": "538facfd41537739cd8cef6cca190471",
                "sha256": "c19c9a2f4338f4055839ff9ebe23e8c25ce2f0e519b571064e5312f413b89046"
            },
            "downloads": -1,
            "filename": "planesections-1.4.2.tar.gz",
            "has_sig": false,
            "md5_digest": "538facfd41537739cd8cef6cca190471",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 52889,
            "upload_time": "2025-08-11T08:18:30",
            "upload_time_iso_8601": "2025-08-11T08:18:30.683149Z",
            "url": "https://files.pythonhosted.org/packages/b6/c1/3417b3f021c0a24e3d1c6335c212bb0595e9072762409ad7ad0f2bfac1f1/planesections-1.4.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-11 08:18:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cslotboom",
    "github_project": "planesections",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "planesections"
}
        
Elapsed time: 3.99346s