Skip to main content

General-purpose finite element solver - pyfe3d

Github Actions status:

Actions Status

Coverage status:

Codecov Status

About pyfe3d

The pyfe3d module is a general-purpose finite element solver for structural analysis and optimization based on Python and Cython. The main principles guiding the development of pyfe3d are: simplicity, efficiency and compatibility. The aimed level of compatibility allows one to run this solver in any platform, including the Google Colab environment.

Citing this library

Saullo G. P. Castro. (2026). General-purpose finite element solver based on Python and Cython (Version 0.8.0). Zenodo. DOI: https://doi.org/10.5281/zenodo.6573489.

Documentation

The documentation is available on: https://saullocastro.github.io/pyfe3d.

Important features of this library

  • efficient and simple for linear and nonlinear analyses
  • importable and cimportable code
  • 6 degrees-of-freedom per node

Available finite elements

  • 'Quad4' - 4-node plate with linear interpolation, equivalent to Nastran's CQUAD4. The recommended quadrilateral plate element.

  • 'Quad4R' - 4-node plate with linear interpolation, equivalent to Abaqus' S4R. It has a not very robust hourglass control.

  • 'Tria3R' - 3-node plate with linear interpolation, equivalent to Abaqus' S3R or Nastran's CTRIA3.

  • 'BeamC' - 2-node Timoshenko beam element with consistent shape functions and analytical integration. The recommended beam element.

  • 'BeamLR' - 2-node Timoshenko beam element with linear interpolation and reduced integration.

  • 'Spring' - 2-node spring element with 6 stiffenesses defined in the element coordinate system.

  • 'Truss' - 2-node truss element with only axial and torsion stiffness. I recommend using the BeamLR instead, which is physically more consistent.

Development history

Main versions Changes
0.8.0 KCNL matrix for all elements, with more accurate nonlinear analyses; fixed KC0 and KG for beams; fixed KC0 for Tria3R.
0.7.0 Drilling stiffness re-coupled with in-plane rotation using K6ROT; fixed drilling stiffness integration; restored missing pid attribute.
0.6.4 Internal force vectors (finte) for all elements; fixed drilling stiffness (K6ROT) scaling; added Python 3.14 and removed Python 3.8 support; Linux wheels limited to 64-bit; Exposed update_probe_finte to Python; new documentation examples.
0.5.2 New Quad4 element; K6ROT drilling stiffness; probe.update_BL; removed alg3dpy dependency; topology optimization tutorial
0.4.28 Piston theory aerodynamics for Quad4R; fixed array casting on some systems; Quad4R less sensitive to small element sizes; new pid attribute for elements; exposed element orientation vectors; Python 3.12 support; fixed build for Linux and macOS wheels.
0.3.24 New Tria3R element; fixed BeamC formulation; fixed beam torsion stiffness; fixed lamination parameters and added their gradients; fixed lumped mass for Tria3R; removed dependency on the NumPy C API; OpenMP build fixes; improved Zenodo metadata and documentation layout; Python 3.10 support.
0.2.8 Material coordinate systems for plate elements; Fixed Truss mass matrix; more aggressive Cython directives; license changed to 3-clause BSD; license info in README, author metadata updates.
0.1.16 New Spring element; Rotation matrices using direct rij terms instead of Euler angles; renamed update_xe to update_probe_xe; probe made a public attribute; KG with a given stress state; renamed update_ue to update_probe_ue
0.1.3 First release: Quad4R, BeamC, BeamLR and Truss elements; shell properties; linear buckling

Installing pyfe3d

First, you should try to install from the distributed binaries by simply doing:

python -m pip install pyfe3d

If a distribution could not be found, you can try to install from the source code using:

python -m pip install .

Another alternative is the following:

python -m pip install -r requirements.txt
python setup.py install

If none of the above alternatives worked for you, this link shares some information on how to set up a C compiler on different operating systems:

https://cython2.readthedocs.io/en/latest/src/quickstart/install.html

License

Distrubuted under the 3-Clause BSD license (https://raw.github.com/saullocastro/pyfe3d/main/LICENSE):

Copyright (c) 2021-2026, Saullo G. P. Castro (S.G.P.Castro@tudelft.nl)
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Contacts:

Release files for pyfe3d 0.8.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 pyfe3d 0.8.0
File Size Uploaded
pyfe3d-0.8.0.tar.gz 3.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyfe3d 0.8.0
File
pyfe3d-0.8.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pyfe3d-0.8.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pyfe3d-0.8.0-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details
pyfe3d-0.8.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pyfe3d-0.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
pyfe3d-0.8.0-cp313-cp313-macosx_10_13_universal2.whl CPython 3.13 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) Details
pyfe3d-0.8.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyfe3d-0.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pyfe3d-0.8.0-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details
pyfe3d-0.8.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyfe3d-0.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pyfe3d-0.8.0-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details
pyfe3d-0.8.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyfe3d-0.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pyfe3d-0.8.0-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details
pyfe3d-0.8.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pyfe3d-0.8.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pyfe3d-0.8.0-cp39-cp39-macosx_10_9_universal2.whl CPython 3.9 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64) Details

Total release size: 116.3 MB

Release files / pyfe3d-0.8.0.tar.gz

Download URL pyfe3d-0.8.0.tar.gz
Size 3.7 MB
Tags Source
SHA-256 checksum
How to use checksums
c52ac24e9cb6bb7e5cc4dbca88a542a15af44b945f3c8baa8fec43620cf056e9
BLAKE2b-256 checksum
How to use checksums
5c7c2ee5a545254d26ded91a667660c0c30be875621831e03dd8c197f7538557
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp314-cp314-win_amd64.whl

Download URL pyfe3d-0.8.0-cp314-cp314-win_amd64.whl
Size 1.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
391574d5f25dfe30a376a88d4b556e0a7422d70401cbfc83eb346a62a7112e68
BLAKE2b-256 checksum
How to use checksums
32d7addbbe9590f8a13dfc9e31b40b13d494ef37253bbd2e2ec0212569055aa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.8.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 14.2 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
86965b13b8e52d175f8fb7d1d55269851278fc39d81e59829b302899f7f6dd1c
BLAKE2b-256 checksum
How to use checksums
bbc8b0344ce9dd1f5ed0b5934a5ecef0fdb1906d83d653cef434b3c22a47f9ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp314-cp314-macosx_10_15_universal2.whl

Download URL pyfe3d-0.8.0-cp314-cp314-macosx_10_15_universal2.whl
Size 3.3 MB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
53a98fe7eca2bdb41247744705b6beff3e596a86df10f384933c972558332c71
BLAKE2b-256 checksum
How to use checksums
2f56483b07ec2cdcbe1a8c80dc35c0c1ef597484aab920aba6bf43b28590601c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp313-cp313-win_amd64.whl

Download URL pyfe3d-0.8.0-cp313-cp313-win_amd64.whl
Size 1.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
ac19477c07ed1283777993d1edadcc188cbf7a710de6a28f7eb5782326bcb489
BLAKE2b-256 checksum
How to use checksums
33f5b3e73c21716d59a175f130a8382ff46fdb646a8ddd41ce7b94e5b54bffba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / pyfe3d-0.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 14.2 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9ddddcafa4407e04af4243913fbdb745267b1ff03eb234fb3eae5a596f68aa85
BLAKE2b-256 checksum
How to use checksums
c6cfab49d161d517a7ee1b842fc44f24093531b29b3dec7942721a66db3ffa25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp313-cp313-macosx_10_13_universal2.whl

Download URL pyfe3d-0.8.0-cp313-cp313-macosx_10_13_universal2.whl
Size 3.3 MB
Tags CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
2dc527fd1f99bef27eb575386caf6d1ccf0133d221cfe56808a2d2259ffac030
BLAKE2b-256 checksum
How to use checksums
d7cf9c2344eeb70ba06e79c3016e94fad1353dbe55ec6f6f51ea8fcc0303037f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / pyfe3d-0.8.0-cp312-cp312-win_amd64.whl

Download URL pyfe3d-0.8.0-cp312-cp312-win_amd64.whl
Size 1.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8e342bd2b95277e88f4492e2fe1e165270705afe78a847bfbfe43b9150ffa9d0
BLAKE2b-256 checksum
How to use checksums
c01d8a5ca5f40952b3c5270e10b13ebffaf69186c78c09eb4fa59674dfad952c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / pyfe3d-0.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 13.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
39b55331590169bc6363a32b4552832f94a97d33bb6a8a0c0bddf55fa4aeaf7b
BLAKE2b-256 checksum
How to use checksums
7b4d1d9719cb7b347ac58bab15607a94cdfc6c656dd2a8617e4e7010525068ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp312-cp312-macosx_10_13_universal2.whl

Download URL pyfe3d-0.8.0-cp312-cp312-macosx_10_13_universal2.whl
Size 3.2 MB
Tags CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
5833c0783a33fbd832ea8cae0286a0712e78a43d8a53325b81290f078250ab42
BLAKE2b-256 checksum
How to use checksums
1bf7cd4dec8fbfbdc09f2a4c0ece74dfb8ddebf732e44bf2dc092295d3167f35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / pyfe3d-0.8.0-cp311-cp311-win_amd64.whl

Download URL pyfe3d-0.8.0-cp311-cp311-win_amd64.whl
Size 1.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
a4b4f3f125f5df251f19a043da682675c7cf0d646a96831e9985baa69d7ac1e9
BLAKE2b-256 checksum
How to use checksums
75a57cb91e19397d8975bb3c988e4fa1d8e316aaa8c8a046d8c437e850a214de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / pyfe3d-0.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 13.6 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a49758ece0007a256770c3275bd9b4d8d6f86bb9856a96f8378cbba0d0d3dab0
BLAKE2b-256 checksum
How to use checksums
5735d1af03a61d97f13715f5947c825ff0a0297cc1219c2488960f2a7a671b0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp311-cp311-macosx_10_9_universal2.whl

Download URL pyfe3d-0.8.0-cp311-cp311-macosx_10_9_universal2.whl
Size 3.2 MB
Tags CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
468ed86671a05cd9ec7bdfa8a00ad49a941b8a1603e2865a0d47048856aec844
BLAKE2b-256 checksum
How to use checksums
024631988c88ff8d449cf6ff4f9953628f50193fba1e848196254cdbd2e0bfa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / pyfe3d-0.8.0-cp310-cp310-win_amd64.whl

Download URL pyfe3d-0.8.0-cp310-cp310-win_amd64.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d4f0c5b3f64fcec68a47c318b4fda6b518ad868141191ddb9b0e45222d8f938c
BLAKE2b-256 checksum
How to use checksums
25126f4b1a3e4fd259c3372f92c180f13284fdfc61cea9d0284f1a3fd3e15006
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.11

Release files / pyfe3d-0.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 13.3 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3f0542780ee326549d6b620e3f54650757b8a76dedc74f55f12ec5c2b69a91fb
BLAKE2b-256 checksum
How to use checksums
773cc5d2c846cba77cc219eb723a5afcbaf69016cd68e4ecebed5871594f5090
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp310-cp310-macosx_10_9_universal2.whl

Download URL pyfe3d-0.8.0-cp310-cp310-macosx_10_9_universal2.whl
Size 3.2 MB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
e3e6b161c04965361e113bb59cbacace84eeefb04bb56ebd8db52879dfaf3d2d
BLAKE2b-256 checksum
How to use checksums
221eaf39cde3361ee20521652e8e707957aff38fda5dee1a78f38036e9e5c348
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.11

Release files / pyfe3d-0.8.0-cp39-cp39-win_amd64.whl

Download URL pyfe3d-0.8.0-cp39-cp39-win_amd64.whl
Size 1.8 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
563fd237f3f8da7ea6468c3e5befc7c178db00836da4556a44678de8d794caaf
BLAKE2b-256 checksum
How to use checksums
a04f11e971bd8d0a7ff3e1289564b69cbc71b6f4f0d880a8f851035e3c86c44c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.13

Release files / pyfe3d-0.8.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.8.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 13.2 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c9654ee4c51a984149d8e044d41f75c421845f5dcf9ca0fe37fb4889741d9532
BLAKE2b-256 checksum
How to use checksums
42b856ec2fb1d6d59e52ca875d80b04d2ac425c36028a701dd1e5acc33046faf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / pyfe3d-0.8.0-cp39-cp39-macosx_10_9_universal2.whl

Download URL pyfe3d-0.8.0-cp39-cp39-macosx_10_9_universal2.whl
Size 3.2 MB
Tags CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
20eda070c8e605b766e53011527f2b0c021757b8e995b13eedc719a1dcd2fcda
BLAKE2b-256 checksum
How to use checksums
138af7ddc6701a1323d1f65786547ef4d73871b776bd482bce0c3cad7254c853
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.13
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