PyNiteFEA 2.4.1__tar.gz → 3.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pynitefea-2.4.1 → pynitefea-3.1.0}/PKG-INFO +30 -31
- {pynitefea-2.4.1 → pynitefea-3.1.0}/PyNiteFEA.egg-info/PKG-INFO +30 -31
- {pynitefea-2.4.1 → pynitefea-3.1.0}/PyNiteFEA.egg-info/SOURCES.txt +1 -1
- {pynitefea-2.4.1 → pynitefea-3.1.0}/PyNiteFEA.egg-info/requires.txt +11 -13
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Analysis.py +438 -65
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/BeamSegY.py +12 -8
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/BeamSegZ.py +38 -28
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/FEModel3D.py +294 -166
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/LoadCombo.py +3 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/MatFoundation.py +3 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Material.py +4 -1
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Member3D.py +306 -134
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Mesh.py +27 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Node3D.py +3 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/PhysMember.py +70 -29
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Plate3D.py +27 -24
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Quad3D.py +32 -29
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Rendering.py +121 -20
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Report_Template.html +86 -86
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Reporting.py +53 -24
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Section.py +27 -17
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/ShearWall.py +53 -19
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Spring3D.py +12 -8
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Tri3D.py +27 -24
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/VTKWriter.py +3 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/Visualization.py +121 -1
- {pynitefea-2.4.1 → pynitefea-3.1.0}/README.md +14 -2
- pynitefea-3.1.0/pyproject.toml +70 -0
- pynitefea-2.4.1/setup.py +0 -40
- {pynitefea-2.4.1 → pynitefea-3.1.0}/LICENSE +0 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/PyNiteFEA.egg-info/dependency_links.txt +0 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/PyNiteFEA.egg-info/top_level.txt +0 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/FixedEndReactions.py +0 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/MainStyleSheet.css +0 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/Pynite/__init__.py +0 -0
- {pynitefea-2.4.1 → pynitefea-3.1.0}/setup.cfg +0 -0
|
@@ -1,55 +1,42 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyNiteFEA
|
|
3
|
-
Version:
|
|
4
|
-
Summary: A simple
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Version: 3.1.0
|
|
4
|
+
Summary: A simple 3D structural finite element library for Python.
|
|
5
|
+
Author-email: "D. Craig Brinck, PE, SE" <Building.Code@outlook.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/JWock82/Pynite
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.11
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
13
12
|
Classifier: Operating System :: OS Independent
|
|
14
13
|
Requires-Python: >=3.11
|
|
15
14
|
Description-Content-Type: text/markdown
|
|
16
15
|
License-File: LICENSE
|
|
16
|
+
Requires-Dist: matplotlib
|
|
17
17
|
Requires-Dist: numpy>=2.4.0
|
|
18
|
-
Requires-Dist:
|
|
18
|
+
Requires-Dist: prettytable
|
|
19
19
|
Requires-Dist: scipy
|
|
20
|
-
Requires-Dist: matplotlib
|
|
21
20
|
Provides-Extra: all
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist: vtk>=9.3.0; extra == "all"
|
|
24
|
-
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "all"
|
|
25
|
-
Requires-Dist: trame_jupyter_extension; extra == "all"
|
|
21
|
+
Requires-Dist: ipython; extra == "all"
|
|
26
22
|
Requires-Dist: ipywidgets; extra == "all"
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: jinja2; extra == "all"
|
|
24
|
+
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "all"
|
|
25
|
+
Requires-Dist: trame-jupyter-extension; extra == "all"
|
|
26
|
+
Requires-Dist: vtk>=9.3.0; extra == "all"
|
|
29
27
|
Provides-Extra: vtk
|
|
30
|
-
Requires-Dist:
|
|
28
|
+
Requires-Dist: ipython; extra == "vtk"
|
|
31
29
|
Requires-Dist: vtk>=9.3.0; extra == "vtk"
|
|
32
30
|
Provides-Extra: pyvista
|
|
33
|
-
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "pyvista"
|
|
34
|
-
Requires-Dist: trame_jupyter_extension; extra == "pyvista"
|
|
35
31
|
Requires-Dist: ipywidgets; extra == "pyvista"
|
|
32
|
+
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "pyvista"
|
|
33
|
+
Requires-Dist: trame-jupyter-extension; extra == "pyvista"
|
|
36
34
|
Provides-Extra: reporting
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist: Jinja2; extra == "reporting"
|
|
35
|
+
Requires-Dist: jinja2; extra == "reporting"
|
|
39
36
|
Provides-Extra: derivations
|
|
40
37
|
Requires-Dist: jupyterlab; extra == "derivations"
|
|
41
38
|
Requires-Dist: sympy; extra == "derivations"
|
|
42
|
-
Dynamic: author
|
|
43
|
-
Dynamic: author-email
|
|
44
|
-
Dynamic: classifier
|
|
45
|
-
Dynamic: description
|
|
46
|
-
Dynamic: description-content-type
|
|
47
|
-
Dynamic: home-page
|
|
48
39
|
Dynamic: license-file
|
|
49
|
-
Dynamic: provides-extra
|
|
50
|
-
Dynamic: requires-dist
|
|
51
|
-
Dynamic: requires-python
|
|
52
|
-
Dynamic: summary
|
|
53
40
|
|
|
54
41
|
<div align="center">
|
|
55
42
|
<img src="https://github.com/JWock82/Pynite/raw/main/Resources/Full Logo No Buffer.png" width=40% align="center"/>
|
|
@@ -60,7 +47,7 @@ Dynamic: summary
|
|
|
60
47
|

|
|
61
48
|
[](https://codecov.io/gh/JWock82/Pynite)
|
|
62
49
|

|
|
63
|
-

|
|
64
51
|
<img alt="GitHub code size in bytes" src="https://img.shields.io/github/languages/code-size/JWock82/Pynite">
|
|
65
52
|

|
|
66
53
|

|
|
@@ -77,6 +64,7 @@ For a more detailed discussion on installation options and dependencies see http
|
|
|
77
64
|
* 3D static analysis of elastic structures.
|
|
78
65
|
* P-Δ analysis of frame type structures.
|
|
79
66
|
* Modal analysis of frame type structures.
|
|
67
|
+
* Nonlinear pushover analysis of steel frames.
|
|
80
68
|
* Member point loads, linearly varying distributed loads, and nodal loads are supported.
|
|
81
69
|
* Classify loads by load case and create load combinations from load cases.
|
|
82
70
|
* Produces shear, moment, and deflection results and diagrams for each member.
|
|
@@ -121,6 +109,17 @@ Here's a list of projects that use Pynite:
|
|
|
121
109
|
* Phaenotyp (https://github.com/bewegende-Architektur/Phaenotyp) (https://youtu.be/shloSw9HjVI)
|
|
122
110
|
|
|
123
111
|
# What's New?
|
|
112
|
+
3.1.0
|
|
113
|
+
* Improved detection of unstable structures.
|
|
114
|
+
* Bug fix for shear walls. Shear walls were erroneously tracking other plates in the model for internal pier/coupling beam force summations, rather than just the plates related to the individual shear wall.
|
|
115
|
+
|
|
116
|
+
3.0.0
|
|
117
|
+
* Added pushover analysis! Currently, only steel sections are supported for pushover analysis. The assumed interaction equation used to estimate plastic behavior is currently calibrated toward I-shaped members.
|
|
118
|
+
* Refactored all elastic stiffness matrix references from `K` and `k` to `Ke` and `ke`. Most users will not notice this change. Power users who were accessing the stiffness matrices directly will want to note this refactor. This clarifies the code base by indicating which type of stiffness these matrices represent, and reduces ambiguity in preparation for addition of further geometric `Kg/kg` and plastic `Km/km` stiffness matrices.
|
|
119
|
+
* User's can now control the size of member plots.
|
|
120
|
+
* Improved `ShearWall.screenshots()` method. Added coupling beam plots. Added the ability to use the `VTK` renderer instead of the `pyvista` renderer for screenshots.
|
|
121
|
+
* Removed individual load combo plots from member plots when an envelope plot is requested. They cluttered the plots without adding much value.
|
|
122
|
+
|
|
124
123
|
2.4.1
|
|
125
124
|
* Fixed a bug where enveloped results did not work if both tagged and untagged combos were in a model.
|
|
126
125
|
|
|
@@ -147,7 +146,7 @@ v2.2.0
|
|
|
147
146
|
* Updated documentation for rendering.
|
|
148
147
|
|
|
149
148
|
v2.1.0
|
|
150
|
-
* Major speed boost and leaner memory usage: the global stiffness/mass assembly plus the nodal load and fixed-end reaction builders now use block-based vectorized writes instead of Python loops, which keeps data in contiguous NumPy buffers rather than thousands of temporary Python objects. The dense solver sees ~15-25% faster `
|
|
149
|
+
* Major speed boost and leaner memory usage: the global stiffness/mass assembly plus the nodal load and fixed-end reaction builders now use block-based vectorized writes instead of Python loops, which keeps data in contiguous NumPy buffers rather than thousands of temporary Python objects. The dense solver sees ~15-25% faster `Ke`/`M` builds in our targeted benchmarks, while sparse solver runs see ~30% faster stiffness assembly in our benchmarks.
|
|
151
150
|
* Meshes can now be regenerated with the `FEModel3D.meshes[mesh_name].generate()` command. This command removes the old mesh and replaces it with an updated one. The mesh will not remove nodes needed by other elements outside the mesh. Note that any loads applied to the old mesh will be lost when its elements and nodes are deleted. This makes meshes truly parametric.
|
|
152
151
|
* Added `FEModel3D.delete_mesh()` to help deleting old meshes properly.
|
|
153
152
|
* Renderers now automatically set the annotation size as 5% of the minimum distance between nodes. You still have the option of overiding this by setting the annotation size manually.
|
|
@@ -1,55 +1,42 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyNiteFEA
|
|
3
|
-
Version:
|
|
4
|
-
Summary: A simple
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Version: 3.1.0
|
|
4
|
+
Summary: A simple 3D structural finite element library for Python.
|
|
5
|
+
Author-email: "D. Craig Brinck, PE, SE" <Building.Code@outlook.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/JWock82/Pynite
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.11
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
13
12
|
Classifier: Operating System :: OS Independent
|
|
14
13
|
Requires-Python: >=3.11
|
|
15
14
|
Description-Content-Type: text/markdown
|
|
16
15
|
License-File: LICENSE
|
|
16
|
+
Requires-Dist: matplotlib
|
|
17
17
|
Requires-Dist: numpy>=2.4.0
|
|
18
|
-
Requires-Dist:
|
|
18
|
+
Requires-Dist: prettytable
|
|
19
19
|
Requires-Dist: scipy
|
|
20
|
-
Requires-Dist: matplotlib
|
|
21
20
|
Provides-Extra: all
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist: vtk>=9.3.0; extra == "all"
|
|
24
|
-
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "all"
|
|
25
|
-
Requires-Dist: trame_jupyter_extension; extra == "all"
|
|
21
|
+
Requires-Dist: ipython; extra == "all"
|
|
26
22
|
Requires-Dist: ipywidgets; extra == "all"
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: jinja2; extra == "all"
|
|
24
|
+
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "all"
|
|
25
|
+
Requires-Dist: trame-jupyter-extension; extra == "all"
|
|
26
|
+
Requires-Dist: vtk>=9.3.0; extra == "all"
|
|
29
27
|
Provides-Extra: vtk
|
|
30
|
-
Requires-Dist:
|
|
28
|
+
Requires-Dist: ipython; extra == "vtk"
|
|
31
29
|
Requires-Dist: vtk>=9.3.0; extra == "vtk"
|
|
32
30
|
Provides-Extra: pyvista
|
|
33
|
-
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "pyvista"
|
|
34
|
-
Requires-Dist: trame_jupyter_extension; extra == "pyvista"
|
|
35
31
|
Requires-Dist: ipywidgets; extra == "pyvista"
|
|
32
|
+
Requires-Dist: pyvista[all,trame]>=0.43.4; extra == "pyvista"
|
|
33
|
+
Requires-Dist: trame-jupyter-extension; extra == "pyvista"
|
|
36
34
|
Provides-Extra: reporting
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist: Jinja2; extra == "reporting"
|
|
35
|
+
Requires-Dist: jinja2; extra == "reporting"
|
|
39
36
|
Provides-Extra: derivations
|
|
40
37
|
Requires-Dist: jupyterlab; extra == "derivations"
|
|
41
38
|
Requires-Dist: sympy; extra == "derivations"
|
|
42
|
-
Dynamic: author
|
|
43
|
-
Dynamic: author-email
|
|
44
|
-
Dynamic: classifier
|
|
45
|
-
Dynamic: description
|
|
46
|
-
Dynamic: description-content-type
|
|
47
|
-
Dynamic: home-page
|
|
48
39
|
Dynamic: license-file
|
|
49
|
-
Dynamic: provides-extra
|
|
50
|
-
Dynamic: requires-dist
|
|
51
|
-
Dynamic: requires-python
|
|
52
|
-
Dynamic: summary
|
|
53
40
|
|
|
54
41
|
<div align="center">
|
|
55
42
|
<img src="https://github.com/JWock82/Pynite/raw/main/Resources/Full Logo No Buffer.png" width=40% align="center"/>
|
|
@@ -60,7 +47,7 @@ Dynamic: summary
|
|
|
60
47
|

|
|
61
48
|
[](https://codecov.io/gh/JWock82/Pynite)
|
|
62
49
|

|
|
63
|
-

|
|
64
51
|
<img alt="GitHub code size in bytes" src="https://img.shields.io/github/languages/code-size/JWock82/Pynite">
|
|
65
52
|

|
|
66
53
|

|
|
@@ -77,6 +64,7 @@ For a more detailed discussion on installation options and dependencies see http
|
|
|
77
64
|
* 3D static analysis of elastic structures.
|
|
78
65
|
* P-Δ analysis of frame type structures.
|
|
79
66
|
* Modal analysis of frame type structures.
|
|
67
|
+
* Nonlinear pushover analysis of steel frames.
|
|
80
68
|
* Member point loads, linearly varying distributed loads, and nodal loads are supported.
|
|
81
69
|
* Classify loads by load case and create load combinations from load cases.
|
|
82
70
|
* Produces shear, moment, and deflection results and diagrams for each member.
|
|
@@ -121,6 +109,17 @@ Here's a list of projects that use Pynite:
|
|
|
121
109
|
* Phaenotyp (https://github.com/bewegende-Architektur/Phaenotyp) (https://youtu.be/shloSw9HjVI)
|
|
122
110
|
|
|
123
111
|
# What's New?
|
|
112
|
+
3.1.0
|
|
113
|
+
* Improved detection of unstable structures.
|
|
114
|
+
* Bug fix for shear walls. Shear walls were erroneously tracking other plates in the model for internal pier/coupling beam force summations, rather than just the plates related to the individual shear wall.
|
|
115
|
+
|
|
116
|
+
3.0.0
|
|
117
|
+
* Added pushover analysis! Currently, only steel sections are supported for pushover analysis. The assumed interaction equation used to estimate plastic behavior is currently calibrated toward I-shaped members.
|
|
118
|
+
* Refactored all elastic stiffness matrix references from `K` and `k` to `Ke` and `ke`. Most users will not notice this change. Power users who were accessing the stiffness matrices directly will want to note this refactor. This clarifies the code base by indicating which type of stiffness these matrices represent, and reduces ambiguity in preparation for addition of further geometric `Kg/kg` and plastic `Km/km` stiffness matrices.
|
|
119
|
+
* User's can now control the size of member plots.
|
|
120
|
+
* Improved `ShearWall.screenshots()` method. Added coupling beam plots. Added the ability to use the `VTK` renderer instead of the `pyvista` renderer for screenshots.
|
|
121
|
+
* Removed individual load combo plots from member plots when an envelope plot is requested. They cluttered the plots without adding much value.
|
|
122
|
+
|
|
124
123
|
2.4.1
|
|
125
124
|
* Fixed a bug where enveloped results did not work if both tagged and untagged combos were in a model.
|
|
126
125
|
|
|
@@ -147,7 +146,7 @@ v2.2.0
|
|
|
147
146
|
* Updated documentation for rendering.
|
|
148
147
|
|
|
149
148
|
v2.1.0
|
|
150
|
-
* Major speed boost and leaner memory usage: the global stiffness/mass assembly plus the nodal load and fixed-end reaction builders now use block-based vectorized writes instead of Python loops, which keeps data in contiguous NumPy buffers rather than thousands of temporary Python objects. The dense solver sees ~15-25% faster `
|
|
149
|
+
* Major speed boost and leaner memory usage: the global stiffness/mass assembly plus the nodal load and fixed-end reaction builders now use block-based vectorized writes instead of Python loops, which keeps data in contiguous NumPy buffers rather than thousands of temporary Python objects. The dense solver sees ~15-25% faster `Ke`/`M` builds in our targeted benchmarks, while sparse solver runs see ~30% faster stiffness assembly in our benchmarks.
|
|
151
150
|
* Meshes can now be regenerated with the `FEModel3D.meshes[mesh_name].generate()` command. This command removes the old mesh and replaces it with an updated one. The mesh will not remove nodes needed by other elements outside the mesh. Note that any loads applied to the old mesh will be lost when its elements and nodes are deleted. This makes meshes truly parametric.
|
|
152
151
|
* Added `FEModel3D.delete_mesh()` to help deleting old meshes properly.
|
|
153
152
|
* Renderers now automatically set the annotation size as 5% of the minimum distance between nodes. You still have the option of overiding this by setting the annotation size manually.
|
|
@@ -1,30 +1,28 @@
|
|
|
1
|
+
matplotlib
|
|
1
2
|
numpy>=2.4.0
|
|
2
|
-
|
|
3
|
+
prettytable
|
|
3
4
|
scipy
|
|
4
|
-
matplotlib
|
|
5
5
|
|
|
6
6
|
[all]
|
|
7
|
-
|
|
8
|
-
vtk>=9.3.0
|
|
9
|
-
pyvista[all,trame]>=0.43.4
|
|
10
|
-
trame_jupyter_extension
|
|
7
|
+
ipython
|
|
11
8
|
ipywidgets
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
jinja2
|
|
10
|
+
pyvista[all,trame]>=0.43.4
|
|
11
|
+
trame-jupyter-extension
|
|
12
|
+
vtk>=9.3.0
|
|
14
13
|
|
|
15
14
|
[derivations]
|
|
16
15
|
jupyterlab
|
|
17
16
|
sympy
|
|
18
17
|
|
|
19
18
|
[pyvista]
|
|
20
|
-
pyvista[all,trame]>=0.43.4
|
|
21
|
-
trame_jupyter_extension
|
|
22
19
|
ipywidgets
|
|
20
|
+
pyvista[all,trame]>=0.43.4
|
|
21
|
+
trame-jupyter-extension
|
|
23
22
|
|
|
24
23
|
[reporting]
|
|
25
|
-
|
|
26
|
-
Jinja2
|
|
24
|
+
jinja2
|
|
27
25
|
|
|
28
26
|
[vtk]
|
|
29
|
-
|
|
27
|
+
ipython
|
|
30
28
|
vtk>=9.3.0
|