An easy to use elastic 3D structural engineering finite element analysis library for Python.
The easiest way to install Pynite is with pip:
pip install PyNiteFEA
As I've gotten into the structural engineering profession, I've found there's a need for an easy to use open-source finite element package. I hope to help fill that need by prioritizing the following:
Accuracy: There are no guarantees PyNite is error free, but accuracy and correctness are a priority. When bugs or errors are identified, top priority will be given to eliminate them. PyNite's code is frequently reviewed, and its output is tested against a suite of textbook problems with known solutions using continuous integration (CI) anytime a change to the code base is made. If you do happen to find an error, please report it as an issue.
Simplicity: There are other finite element alternatives out there with many more capabilities, but they are often lacking in documentation, written in difficult languages, or require extensive knowledge of finite element theory and/or element formulations to use. PyNite is not intended to be the most technically advanced solver out there. Rather, the goal is to provide a robust yet simple general purpose package.
Improvement: I plan to continue supporting PyNite for many years to come. There are a lot of pieces I'd like to add to PyNite going forward. There's a lot of potential to create extensions as well to solve all kinds of engineering problems. There are more problems to solve than I have time for, so some priorities will have to be made. The plan is to keep PyNite mainstream, adding core functionality first.
Collaboration: The intent is to keep PyNite free and open source. This will encourage future development and contributions. Keeping it open source will allow anyone to inspect and improve the code it runs on. If you see an area you can help PyNite improve in you are encouraged to contribute.
Whether you just need help getting started with PyNite, or are looking to build something more complex, there are a few resources available:
PyNite depends on the following packages:
merge_duplicate_nodesmethod. It seemed to be working, but it was hard to follow, and there may have been cases where it didn't work as expected. Simplified the code for this method to make it clear what it was doing, and to make it more efficient. Added comments explaining each step.
RectangleMeshwhere it could not be used repeatedly.
namethroughout code. For example,
Rendererclass. This class is being built to give the user more control over the appearance and behavior of renderings.
v0.0.63 thru v0.0.64
add_meshmethod. It was not working properly after version 0.0.62.
Falsein your call to your analysis command.
FEModel3Dclass for quickly renaming all the nodes and elements in the model in sequential order.
last_elementattribute to the
meshclass. These methods can be used to get the name of the last node or element in a mesh.
add_meshmethod. It now can handle adding meshes containing node and element names already defined in the model. It automatically resolves the duplicate names.
v0.0.57 thru 0.0.61
Here's a list of projects that run on PyNite: