Skip to main content

Easy Application for Structural analYsis with BEAMs

Project description

GitHub release PyPI Version DOI GitHub license GitHub stars PyPi downloads

EasyBeam

Easy Application for Structural analYsis with BEAMs

A Python package for the structural analysis of planar structures based on Euler-Bernoulli beam theory. EasyBeam analyzes both statics, giving deformation and stress reslts, as well as the eigenvalue problem to assess the free-vibration resonance behavior. Ths package is geared education and therefore trimmed to code readability and expandability, while maintaining usability and easy to understand graphical dipiction of the results. Currently EasyBeam considers only simple cross-sectional geometry.

Installation

Prerequisites

Python 3 with the packages SciPy, NumPy and MatPlotLib are needed. After installation of Python, you can install the necessary libraries via PIP:

pip install scipy
pip install numpy
pip install matplotlib

Install

After cloning this repository, you can install EasyBeam with the following code:

python -m pip install -U .

PIP

You can also install EasyBeam via PIP

pip install EasyBeam

How to use

Definition of nodes

The coordinates of the nodes must be defined. In the shown example, three nodes are defined. For each node, the first value defines the x-coordinate and the second value defines the y-coordinate of the node.

Example.Nodes = [[ 100,   0],  # node 1 at x=100 and y=0
                 [ 200,   0],  # node 2 at x=200 and y=0
                 [ 200, 100]]  # node 3 at x=200 and y=100

Definition of elements

Here are defined the elements and which nodes they connect. In the shown example, two elements are defined. For each element, the two node numbers, which the element connects, are selected.

Example.El = [[ 1,   2],  # element 1 between node 1 and node 2
              [ 2,   3]]  # element 2 between node 2 and node 3

Definition of boundary conditions

It is possible to define boundary conditions on each node. The first value defines the node number on which the boundary condition is applied. The following three values defines the displacement in x-direction, the displacement in y-direction and the rotation. In the following example, node 1 is fixed in all three degrees of freedom.

Example.Disp = [[1, [0, 0, 0]]]  # node 1 with 0 displacement in x, 0 displacement in y and 0 rotation

In the following example, for node 1 the displacement is fixed in x and y direction and for node 2 the displacement is fixed in y direction.

Example.Disp = [[1, [  0, 0, 'f']],  # node 1 with 0 displacement in x, 0 displacement in y and free rotation
                [2, ['f', 0, 'f']]]  # node 2 with free displacement in x, 0 displacement in y and free rotation

It is also possible to apply a known displacement on a node. In the following example, node 1 is fixed in all three degrees of freedom and on node 2 is applied a displacement of 1 in y direction and a rotation of 0.1.

Example.Disp = [[1, [  0, 0,   0]],  # node 1 with 0 displacement in x, 0 displacement in y and 0 rotation
                [2, ['f', 1, 0.1]]]  # node 2 with free displacement in x, displacement of 1 in y and rotation of 0.1

Definition of loads

The definition of loads is done similar to the definition of boundary conditions. The first value defines the node number on which the load is applied. The following three values defines the force in x-direction, the force in y-direction and the torque. In the following example, on node 2 is applied a force in x-direction of 100 and on node 3 is applied a force in y-direction of 200 and a torque of 50.

Example.Load = [[2, [100, 'f', 'f']],  # node 2 with a force in x of 100, no force in y and no torque
                [3, ['f', 200,  50]]]  # node 3 with no force in x, a force of 200 in y and a torque of 50

Definition of cross section and material properties

Firstly, it is necessary to define the properties for the cross sections and materials. In the following example, two different property sets are defined.

Example.Properties = [['Mat1', 7.85e-9, 206900, 0.29, 'rect', 20, 10],  # 'Mat1' with density 7.85e-9, elastic modulus 206900, Poisson ration 0.29, rectangular cross section, height of 20 and width of 10
                      ['Mat2', 2.70e-9,  71000, 0.34, 'rect', 25, 15]]  # 'Mat2' with density 2.70e-9, elastic modulus  71000, Poisson ration 0.34, rectangular cross section, height of 25 and width of 15

Secondly, the property sets must be assigned to the elements. Therefore, a list is created where for each element, the property set is chosen. In the following example, 'Mat1' is assigned to element 1 and 'Mat2' is assigned to element 2.

Example.PropID = ['Mat1', 'Mat2']  # 'Mat1' is assigned to element 1 and 'Mat2' is assigned to element 2

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

EasyBeam-1.1.1.tar.gz (53.5 kB view details)

Uploaded Source

File details

Details for the file EasyBeam-1.1.1.tar.gz.

File metadata

  • Download URL: EasyBeam-1.1.1.tar.gz
  • Upload date:
  • Size: 53.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.4

File hashes

Hashes for EasyBeam-1.1.1.tar.gz
Algorithm Hash digest
SHA256 0125a183665f8c46c385706a8ab7c2e761e8136f19e5c70aca36f8860a6a13da
MD5 8fac2c41e14b68f5a7ae8a1d83333c54
BLAKE2b-256 88b37fb395cc3ed2f264ad0c24821138f60cb9c30f3c1bcc1c724197be9da5fc

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