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.9.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

See CHANGELOG.md for the details of each version.

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.9.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.9.0
File Size Uploaded
pyfe3d-0.9.0.tar.gz 3.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyfe3d 0.9.0
File
pyfe3d-0.9.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pyfe3d-0.9.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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
pyfe3d-0.9.0-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details
pyfe3d-0.9.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pyfe3d-0.9.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.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pyfe3d-0.9.0-cp313-cp313-macosx_10_13_universal2.whl CPython 3.13 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) Details
pyfe3d-0.9.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyfe3d-0.9.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.9.0-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details
pyfe3d-0.9.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyfe3d-0.9.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.9.0-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details
pyfe3d-0.9.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyfe3d-0.9.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.9.0-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details
pyfe3d-0.9.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pyfe3d-0.9.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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
pyfe3d-0.9.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: 117.5 MB

Release files / pyfe3d-0.9.0.tar.gz

Download URL pyfe3d-0.9.0.tar.gz
Size 3.7 MB
Tags Source
SHA-256 checksum
How to use checksums
239588c205b1a173c507b42d9d08864f2ff805cf1b7d46b8ebd264919fb5973f
BLAKE2b-256 checksum
How to use checksums
30ac4b65c29032ce37ec8f33a97b143fdc918547264d05bb286a00acc98712a6
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.9.0-cp314-cp314-win_amd64.whl

Download URL pyfe3d-0.9.0-cp314-cp314-win_amd64.whl
Size 1.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
104b5646eff49e9091a9da51df0591e05c666280d103e6a0a8834901497e0020
BLAKE2b-256 checksum
How to use checksums
4a5302c1a5058a4d6df5c3ccccf7a8b1eab7a9328b2d5a4fd90886a39aa976b6
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.9.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.9.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 14.3 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
40f96a610f93daa112e7341eb1ba99737abbb84be4eb5119f4fa494ce4baa6c7
BLAKE2b-256 checksum
How to use checksums
b5198ddb43f8ec58079dbcab07b7aa745664b5fa3e0211954950044942671adc
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.9.0-cp314-cp314-macosx_10_15_universal2.whl

Download URL pyfe3d-0.9.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
2c241291c5086d4ce9875778f7c15ec2925ef3c18adc227a5efb122dc0fbed54
BLAKE2b-256 checksum
How to use checksums
193d0862c67cc7d997e0c83597f0140f0204e1cd1a1594acc991b9e9779df575
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.9.0-cp313-cp313-win_amd64.whl

Download URL pyfe3d-0.9.0-cp313-cp313-win_amd64.whl
Size 1.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2e9324c4a92243815e827a2693d51d17ba1369d7530691d7dffd6d1afe66933a
BLAKE2b-256 checksum
How to use checksums
583886a6d2911d5295d378450fe230e910d2d2c7e3413a6402439ec71a613bcb
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.9.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.9.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 14.3 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e1b4d4e272ffa35cbc734427f82b9c81b1fe6b1d9e18bce71d30f17ecc5925a1
BLAKE2b-256 checksum
How to use checksums
84764bca041602135f913479160cf232181d8d51965b12d43c7b0fb082cc14fa
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.9.0-cp313-cp313-macosx_10_13_universal2.whl

Download URL pyfe3d-0.9.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
6bb1a7a046c8a2f3d03ffc8a27c32c89a3870dee8a738ee901c146e9ef360117
BLAKE2b-256 checksum
How to use checksums
6f57eec1c1f6c52c34580ba5573f8b219995357d55dbd98ec53e75963e330899
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.9.0-cp312-cp312-win_amd64.whl

Download URL pyfe3d-0.9.0-cp312-cp312-win_amd64.whl
Size 1.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4f68f392552067c3cbe61ee13cd2fe2da8272842c616b6f2f8d9568dda5b2167
BLAKE2b-256 checksum
How to use checksums
632ee71bef85821b5ff7251d62980baa52ef5dc79957d7aaa52fede7476efa7f
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.9.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.9.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 14.0 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
62681727c76fe5cba8b824c5a390c250604829b8dc15647a1ab01de183015425
BLAKE2b-256 checksum
How to use checksums
f579f3817c716b863229708f55b8d29c85d93d0b6c1f976b91ac06115344b85f
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.9.0-cp312-cp312-macosx_10_13_universal2.whl

Download URL pyfe3d-0.9.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
8ee9cb86c04456124fc1f6e341891ec1d88333aa110a003d13fdbcc898f7dde9
BLAKE2b-256 checksum
How to use checksums
88fefb315cec187a2ba3b07d2a2cbc9e97ce8d28c2b3f8455e547e7e7b3128da
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.9.0-cp311-cp311-win_amd64.whl

Download URL pyfe3d-0.9.0-cp311-cp311-win_amd64.whl
Size 1.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e6d548778ac53db1beb1f89beae16b9d52089938b293e3a3b5a0ba47164172b5
BLAKE2b-256 checksum
How to use checksums
e8c00203670f903c7bd63f015d4886ed0e1d65be3b1b8e44dcd4b5b870ed5cdb
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.9.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.9.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 13.7 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9dd4ac07d4963b20fa6e4fa7b2ec9f7b493471bb27110d62b9f80f89a7e8c87e
BLAKE2b-256 checksum
How to use checksums
ebdc64cab8211b7f84511d0e8d0570069395c047ab0e26d9794c724ba5d0599a
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.9.0-cp311-cp311-macosx_10_9_universal2.whl

Download URL pyfe3d-0.9.0-cp311-cp311-macosx_10_9_universal2.whl
Size 3.3 MB
Tags CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
bcb72ba0eea8f214a795c4a383cfb89d8ce678520c46f648f48b5ea6152a939b
BLAKE2b-256 checksum
How to use checksums
2fa1e706c680ca45952c0882b4e5088098b906e97818c672191c8ee75008f702
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.9.0-cp310-cp310-win_amd64.whl

Download URL pyfe3d-0.9.0-cp310-cp310-win_amd64.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
6a08c6aee1ae27cd024051b3e1aaab584a4d8b421876361f36790367bf1ead99
BLAKE2b-256 checksum
How to use checksums
206fb2f838d5b568b58d4187c13deb07f0a0e87743e6baaf300d2e04a3c7b224
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.9.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.9.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 13.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3c38139bd5c988bc1ac3a6c988cdfe5c6b01ad9cdccebcad423a0c5b46b013dc
BLAKE2b-256 checksum
How to use checksums
356105683f8cae7e006ee708831fefdcaa74e2ada7f7a97a9e4c6920d8ec945d
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.9.0-cp310-cp310-macosx_10_9_universal2.whl

Download URL pyfe3d-0.9.0-cp310-cp310-macosx_10_9_universal2.whl
Size 3.3 MB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
553e1adbd6c7efe50aa16c78ab61a0397655a094ccc2c178d36587b280bd5d32
BLAKE2b-256 checksum
How to use checksums
5cd476505c9b8f8b54c316b9e3ca80674b85e9edab3624be2d3ef433b1d056f9
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.9.0-cp39-cp39-win_amd64.whl

Download URL pyfe3d-0.9.0-cp39-cp39-win_amd64.whl
Size 1.8 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
be57129f529e0463d906ab9e5c3fdaadaa7f171c461c110758a7853ffcfd2728
BLAKE2b-256 checksum
How to use checksums
d9810fa255ee4e47d663e921df356e2749bfbb5230b0903f710e8d0c951011b0
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.9.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pyfe3d-0.9.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 13.4 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0e0bb5eeb2733355a5c0c002a68258f971e7fcdd59cf05fb049130e1c22c0844
BLAKE2b-256 checksum
How to use checksums
dc438be4fb76ef064d960b1f4a3ade3199707e96abca8cdf027ae014537547d1
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.9.0-cp39-cp39-macosx_10_9_universal2.whl

Download URL pyfe3d-0.9.0-cp39-cp39-macosx_10_9_universal2.whl
Size 3.3 MB
Tags CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
ff8b4b6381a0c6b9a2250828b81dd0449a7d3595c2230d3f8750add7da63845a
BLAKE2b-256 checksum
How to use checksums
ff1a0ea301a4ab2a97290773b280b413205aa5699231d1d7ec6c1295fa4f11b8
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