PyNiteFEA 2.4.0__tar.gz → 2.4.1__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.
Files changed (35) hide show
  1. {pynitefea-2.4.0 → pynitefea-2.4.1}/PKG-INFO +4 -1
  2. {pynitefea-2.4.0 → pynitefea-2.4.1}/PyNiteFEA.egg-info/PKG-INFO +4 -1
  3. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Member3D.py +15 -15
  4. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/PhysMember.py +15 -15
  5. {pynitefea-2.4.0 → pynitefea-2.4.1}/README.md +3 -0
  6. {pynitefea-2.4.0 → pynitefea-2.4.1}/setup.py +1 -1
  7. {pynitefea-2.4.0 → pynitefea-2.4.1}/LICENSE +0 -0
  8. {pynitefea-2.4.0 → pynitefea-2.4.1}/PyNiteFEA.egg-info/SOURCES.txt +0 -0
  9. {pynitefea-2.4.0 → pynitefea-2.4.1}/PyNiteFEA.egg-info/dependency_links.txt +0 -0
  10. {pynitefea-2.4.0 → pynitefea-2.4.1}/PyNiteFEA.egg-info/requires.txt +0 -0
  11. {pynitefea-2.4.0 → pynitefea-2.4.1}/PyNiteFEA.egg-info/top_level.txt +0 -0
  12. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Analysis.py +0 -0
  13. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/BeamSegY.py +0 -0
  14. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/BeamSegZ.py +0 -0
  15. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/FEModel3D.py +0 -0
  16. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/FixedEndReactions.py +0 -0
  17. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/LoadCombo.py +0 -0
  18. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/MainStyleSheet.css +0 -0
  19. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/MatFoundation.py +0 -0
  20. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Material.py +0 -0
  21. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Mesh.py +0 -0
  22. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Node3D.py +0 -0
  23. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Plate3D.py +0 -0
  24. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Quad3D.py +0 -0
  25. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Rendering.py +0 -0
  26. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Report_Template.html +0 -0
  27. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Reporting.py +0 -0
  28. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Section.py +0 -0
  29. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/ShearWall.py +0 -0
  30. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Spring3D.py +0 -0
  31. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Tri3D.py +0 -0
  32. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/VTKWriter.py +0 -0
  33. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/Visualization.py +0 -0
  34. {pynitefea-2.4.0 → pynitefea-2.4.1}/Pynite/__init__.py +0 -0
  35. {pynitefea-2.4.0 → pynitefea-2.4.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyNiteFEA
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: A simple elastic 3D structural finite element library for Python.
5
5
  Home-page: https://github.com/JWock82/Pynite.git
6
6
  Author: D. Craig Brinck, PE, SE
@@ -121,6 +121,9 @@ Here's a list of projects that use Pynite:
121
121
  * Phaenotyp (https://github.com/bewegende-Architektur/Phaenotyp) (https://youtu.be/shloSw9HjVI)
122
122
 
123
123
  # What's New?
124
+ 2.4.1
125
+ * Fixed a bug where enveloped results did not work if both tagged and untagged combos were in a model.
126
+
124
127
  2.4.0
125
128
  * Member `max` and `min` methods now return governing load combination along with the member max/min forces.
126
129
  * Bug fix: Quadrilateral element displacements had corners swapped during VTK visualization. This was a relic from the old MITC4 formulation that has been corrected.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyNiteFEA
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: A simple elastic 3D structural finite element library for Python.
5
5
  Home-page: https://github.com/JWock82/Pynite.git
6
6
  Author: D. Craig Brinck, PE, SE
@@ -121,6 +121,9 @@ Here's a list of projects that use Pynite:
121
121
  * Phaenotyp (https://github.com/bewegende-Architektur/Phaenotyp) (https://youtu.be/shloSw9HjVI)
122
122
 
123
123
  # What's New?
124
+ 2.4.1
125
+ * Fixed a bug where enveloped results did not work if both tagged and untagged combos were in a model.
126
+
124
127
  2.4.0
125
128
  * Member `max` and `min` methods now return governing load combination along with the member max/min forces.
126
129
  * Bug fix: Quadrilateral element displacements had corners swapped during VTK visualization. This was a relic from the old MITC4 formulation that has been corrected.
@@ -1186,7 +1186,7 @@ class Member3D():
1186
1186
  # Filter combos that contain *any* of the given tags
1187
1187
  combo_names = [
1188
1188
  name for name, combo in self.model.load_combos.items()
1189
- if any(tag in combo.combo_tags for tag in combo_tags)
1189
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
1190
1190
  ]
1191
1191
 
1192
1192
  Vmax_global = None # will store the global maximum across combos
@@ -1255,7 +1255,7 @@ class Member3D():
1255
1255
  # Filter combos that contain *any* of the given tags
1256
1256
  combo_names = [
1257
1257
  name for name, combo in self.model.load_combos.items()
1258
- if any(tag in combo.combo_tags for tag in combo_tags)
1258
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
1259
1259
  ]
1260
1260
 
1261
1261
  Vmin_global = None # will store the global minimum across combos
@@ -1319,7 +1319,7 @@ class Member3D():
1319
1319
  combo_names = [combo_name]
1320
1320
  else:
1321
1321
  combo_names = [name for name, combo in self.model.load_combos.items()
1322
- if any(tag in combo.combo_tags for tag in combo_name)]
1322
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
1323
1323
 
1324
1324
  fig, ax = Member3D.__plt.subplots()
1325
1325
  ax.axhline(0, color='black', lw=1)
@@ -1488,7 +1488,7 @@ class Member3D():
1488
1488
  # Filter combos that contain *any* of the given tags
1489
1489
  combo_names = [
1490
1490
  name for name, combo in self.model.load_combos.items()
1491
- if any(tag in combo.combo_tags for tag in combo_tags)
1491
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
1492
1492
  ]
1493
1493
 
1494
1494
  Mmax_global = None # will store the global maximum across combos
@@ -1560,7 +1560,7 @@ class Member3D():
1560
1560
  # Filter combos that contain *any* of the given tags
1561
1561
  combo_names = [
1562
1562
  name for name, combo in self.model.load_combos.items()
1563
- if any(tag in combo.combo_tags for tag in combo_tags)
1563
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
1564
1564
  ]
1565
1565
 
1566
1566
  Mmin_global = None # will store the global minimum across combos
@@ -1628,7 +1628,7 @@ class Member3D():
1628
1628
  combo_names = [combo_name]
1629
1629
  else:
1630
1630
  combo_names = [name for name, combo in self.model.load_combos.items()
1631
- if any(tag in combo.combo_tags for tag in combo_name)]
1631
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
1632
1632
 
1633
1633
  fig, ax = Member3D.__plt.subplots()
1634
1634
  ax.axhline(0, color='black', lw=1)
@@ -1774,7 +1774,7 @@ class Member3D():
1774
1774
  else:
1775
1775
  combo_names = [
1776
1776
  name for name, combo in self.model.load_combos.items()
1777
- if any(tag in combo.combo_tags for tag in combo_tags)
1777
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
1778
1778
  ]
1779
1779
 
1780
1780
  # Track global maximum torsion across all combos
@@ -1839,7 +1839,7 @@ class Member3D():
1839
1839
  else:
1840
1840
  combo_names = [
1841
1841
  name for name, combo in self.model.load_combos.items()
1842
- if any(tag in combo.combo_tags for tag in combo_tags)
1842
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
1843
1843
  ]
1844
1844
 
1845
1845
  # Track global minimum torsion across all combos
@@ -1899,7 +1899,7 @@ class Member3D():
1899
1899
  combo_names = [combo_name]
1900
1900
  else:
1901
1901
  combo_names = [name for name, combo in self.model.load_combos.items()
1902
- if any(tag in combo.combo_tags for tag in combo_name)]
1902
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
1903
1903
 
1904
1904
  fig, ax = Member3D.__plt.subplots()
1905
1905
  ax.axhline(0, color='black', lw=1)
@@ -2020,7 +2020,7 @@ class Member3D():
2020
2020
  # If tags are provided, gather all combos that match ANY of the tags
2021
2021
  combo_names = [
2022
2022
  name for name, combo in self.model.load_combos.items()
2023
- if any(tag in combo.combo_tags for tag in combo_tags)
2023
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
2024
2024
  ]
2025
2025
 
2026
2026
  # Track the global maximum axial force across all combos
@@ -2085,7 +2085,7 @@ class Member3D():
2085
2085
  # If tags are provided, gather all combos that match ANY of the tags
2086
2086
  combo_names = [
2087
2087
  name for name, combo in self.model.load_combos.items()
2088
- if any(tag in combo.combo_tags for tag in combo_tags)
2088
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
2089
2089
  ]
2090
2090
 
2091
2091
  # Track the global minimum axial force across all combos
@@ -2145,7 +2145,7 @@ class Member3D():
2145
2145
  combo_names = [combo_name]
2146
2146
  else:
2147
2147
  combo_names = [name for name, combo in self.model.load_combos.items()
2148
- if any(tag in combo.combo_tags for tag in combo_name)]
2148
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
2149
2149
 
2150
2150
  fig, ax = Member3D.__plt.subplots()
2151
2151
  ax.axhline(0, color='black', lw=1)
@@ -2313,7 +2313,7 @@ class Member3D():
2313
2313
  else:
2314
2314
  combo_names = [
2315
2315
  name for name, combo in self.model.load_combos.items()
2316
- if any(tag in combo.combo_tags for tag in combo_tags)
2316
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
2317
2317
  ]
2318
2318
 
2319
2319
  # Track global maximum deflection across all combos
@@ -2385,7 +2385,7 @@ class Member3D():
2385
2385
  else:
2386
2386
  combo_names = [
2387
2387
  name for name, combo in self.model.load_combos.items()
2388
- if any(tag in combo.combo_tags for tag in combo_tags)
2388
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)
2389
2389
  ]
2390
2390
 
2391
2391
  # Track global minimum deflection across all combos
@@ -2452,7 +2452,7 @@ class Member3D():
2452
2452
  combo_names = [combo_name]
2453
2453
  else:
2454
2454
  combo_names = [name for name, combo in self.model.load_combos.items()
2455
- if any(tag in combo.combo_tags for tag in combo_name)]
2455
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
2456
2456
 
2457
2457
  fig, ax = Member3D.__plt.subplots()
2458
2458
  ax.axhline(0, color='black', lw=1)
@@ -240,7 +240,7 @@ class PhysMember(Member3D):
240
240
  combo_names = [combo_tags]
241
241
  else:
242
242
  combo_names = [name for name, combo in self.model.load_combos.items()
243
- if any(tag in combo.combo_tags for tag in combo_tags)]
243
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
244
244
 
245
245
  Vmax = None
246
246
  governing_combo = None
@@ -282,7 +282,7 @@ class PhysMember(Member3D):
282
282
  combo_names = [combo_tags]
283
283
  else:
284
284
  combo_names = [name for name, combo in self.model.load_combos.items()
285
- if any(tag in combo.combo_tags for tag in combo_tags)]
285
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
286
286
 
287
287
  Vmin = None
288
288
  governing_combo = None
@@ -326,7 +326,7 @@ class PhysMember(Member3D):
326
326
  combo_names = [combo_name]
327
327
  else:
328
328
  combo_names = [name for name, combo in self.model.load_combos.items()
329
- if any(tag in combo.combo_tags for tag in combo_name)]
329
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
330
330
 
331
331
  fig, ax = PhysMember.__plt.subplots()
332
332
  ax.axhline(0, color='black', lw=1)
@@ -472,7 +472,7 @@ class PhysMember(Member3D):
472
472
  combo_names = [combo_tags]
473
473
  else:
474
474
  combo_names = [name for name, combo in self.model.load_combos.items()
475
- if any(tag in combo.combo_tags for tag in combo_tags)]
475
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
476
476
 
477
477
  Mmax = None
478
478
  governing_combo = None
@@ -514,7 +514,7 @@ class PhysMember(Member3D):
514
514
  combo_names = [combo_tags]
515
515
  else:
516
516
  combo_names = [name for name, combo in self.model.load_combos.items()
517
- if any(tag in combo.combo_tags for tag in combo_tags)]
517
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
518
518
 
519
519
  Mmin = None
520
520
  governing_combo = None
@@ -558,7 +558,7 @@ class PhysMember(Member3D):
558
558
  combo_names = [combo_name]
559
559
  else:
560
560
  combo_names = [name for name, combo in self.model.load_combos.items()
561
- if any(tag in combo.combo_tags for tag in combo_name)]
561
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
562
562
 
563
563
  fig, ax = PhysMember.__plt.subplots()
564
564
  ax.axhline(0, color='black', lw=1)
@@ -703,7 +703,7 @@ class PhysMember(Member3D):
703
703
  combo_names = [combo_tags]
704
704
  else:
705
705
  combo_names = [name for name, combo in self.model.load_combos.items()
706
- if any(tag in combo.combo_tags for tag in combo_tags)]
706
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
707
707
 
708
708
  Tmax = None
709
709
  governing_combo = None
@@ -741,7 +741,7 @@ class PhysMember(Member3D):
741
741
  combo_names = [combo_tags]
742
742
  else:
743
743
  combo_names = [name for name, combo in self.model.load_combos.items()
744
- if any(tag in combo.combo_tags for tag in combo_tags)]
744
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
745
745
 
746
746
  Tmin = None
747
747
  governing_combo = None
@@ -781,7 +781,7 @@ class PhysMember(Member3D):
781
781
  combo_names = [combo_name]
782
782
  else:
783
783
  combo_names = [name for name, combo in self.model.load_combos.items()
784
- if any(tag in combo.combo_tags for tag in combo_name)]
784
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
785
785
 
786
786
  fig, ax = PhysMember.__plt.subplots()
787
787
  ax.axhline(0, color='black', lw=1)
@@ -911,7 +911,7 @@ class PhysMember(Member3D):
911
911
  combo_names = [combo_tags]
912
912
  else:
913
913
  combo_names = [name for name, combo in self.model.load_combos.items()
914
- if any(tag in combo.combo_tags for tag in combo_tags)]
914
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
915
915
 
916
916
  Pmax = None
917
917
  governing_combo = None
@@ -949,7 +949,7 @@ class PhysMember(Member3D):
949
949
  combo_names = [combo_tags]
950
950
  else:
951
951
  combo_names = [name for name, combo in self.model.load_combos.items()
952
- if any(tag in combo.combo_tags for tag in combo_tags)]
952
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
953
953
 
954
954
  Pmin = None
955
955
  governing_combo = None
@@ -989,7 +989,7 @@ class PhysMember(Member3D):
989
989
  combo_names = [combo_name]
990
990
  else:
991
991
  combo_names = [name for name, combo in self.model.load_combos.items()
992
- if any(tag in combo.combo_tags for tag in combo_name)]
992
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
993
993
 
994
994
  fig, ax = PhysMember.__plt.subplots()
995
995
  ax.axhline(0, color='black', lw=1)
@@ -1125,7 +1125,7 @@ class PhysMember(Member3D):
1125
1125
  combo_names = [combo_tags]
1126
1126
  else:
1127
1127
  combo_names = [name for name, combo in self.model.load_combos.items()
1128
- if any(tag in combo.combo_tags for tag in combo_tags)]
1128
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
1129
1129
 
1130
1130
  dmax = None
1131
1131
  governing_combo = None
@@ -1165,7 +1165,7 @@ class PhysMember(Member3D):
1165
1165
  combo_names = [combo_tags]
1166
1166
  else:
1167
1167
  combo_names = [name for name, combo in self.model.load_combos.items()
1168
- if any(tag in combo.combo_tags for tag in combo_tags)]
1168
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_tags)]
1169
1169
 
1170
1170
  dmin = None
1171
1171
  governing_combo = None
@@ -1229,7 +1229,7 @@ class PhysMember(Member3D):
1229
1229
  combo_names = [combo_name]
1230
1230
  else:
1231
1231
  combo_names = [name for name, combo in self.model.load_combos.items()
1232
- if any(tag in combo.combo_tags for tag in combo_name)]
1232
+ if combo.combo_tags is not None and any(tag in combo.combo_tags for tag in combo_name)]
1233
1233
 
1234
1234
  fig, ax = PhysMember.__plt.subplots()
1235
1235
  ax.axhline(0, color='black', lw=1)
@@ -68,6 +68,9 @@ Here's a list of projects that use Pynite:
68
68
  * Phaenotyp (https://github.com/bewegende-Architektur/Phaenotyp) (https://youtu.be/shloSw9HjVI)
69
69
 
70
70
  # What's New?
71
+ 2.4.1
72
+ * Fixed a bug where enveloped results did not work if both tagged and untagged combos were in a model.
73
+
71
74
  2.4.0
72
75
  * Member `max` and `min` methods now return governing load combination along with the member max/min forces.
73
76
  * Bug fix: Quadrilateral element displacements had corners swapped during VTK visualization. This was a relic from the old MITC4 formulation that has been corrected.
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="PyNiteFEA",
8
- version="2.4.0",
8
+ version="2.4.1",
9
9
  author="D. Craig Brinck, PE, SE",
10
10
  author_email="Building.Code@outlook.com",
11
11
  description="A simple elastic 3D structural finite element library for Python.",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes