Releases: JWock82/Pynite
Releases · JWock82/Pynite
Bug Fix for Envelope Results with Both Tagged & Untagged Combos
Added Governing Combo Results to Member Max/Min Methods
- Member
maxandminmethods now return governing load combination along with the member max/min forces. - Bug fix: Quadrilateral element displacements had corners swapped during VTK visualization. This was a relic from the old MITC4 formulation that has been corrected.
Envelope Member Diagrams, End-Release Visualization, Shear Wall Validation & Bug Fixes
- Added enveloping to member diagrams. Set
combo_nameto a list of combo tags and the member diagram will show an envelope of all the combos that have any of those tags. - Bug fix: Quadrilateral element displacements had corners swapped during VTK visualization. This was a relic from the old MITC4 formulation that has been corrected.
- Bug fix: Added shear wall and mat foundation load cases to
FEModel3D.load_cases(). The list of load cases was sometimes incomplete if these meshes had not yet been generated. - Added bending moment end releases to visualizations.
- Bug fix for shear walls with flanges having an origin with their origin at Y != 0.
- Rectangular meshes now filter out user defined control points that erroneously lie outside their boudaries.
Auto-meshing & Visualization Improvements
- Normalized member force diagrams across the entire model for visual clarity.
- Made mesh auto-regeneration smarter and more efficient, targeting only meshes that have been altered since the last run.
- Added
ShearWallmesh auto-regeneration. Whenever a model is solved any old or outdatedShearWallmeshes are automatically removed and replaced by a rebuild. - Optimized auto-calculated annotation sizing: The new automatic annotation size calculation feature now uses vectorized NumPy operations and caching for efficient rendering of large models with hundreds or thousands of elements.
- Adjusted member diagram label offsets for clarity.
Member Force Diagrams
- Added member diagrams feature for easy visualization of shear, moment, axial, and torsion diagrams along members.
- Updated documentation for rendering.
Major Performance & Memory Improvements + Other Improvements
- 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
K/Mbuilds in our targeted benchmarks, while sparse solver runs see ~30% faster stiffness assembly in our benchmarks. - 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. - Added
FEModel3D.delete_mesh()to help deleting old meshes properly. - 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.
- Added load case/combo identification to VTK rendering.
- Dropped support for Python version 3.10, which is not compatible with Numpy 2.4.
- Removed unecessary checks for Scipy. Scipy has been a required dependency for some time now.
- Cleaned up whitespace to conform to PEP8 style guide.
Numpy >= 2.4 Now Required for VTK Model Visualization
This update brings Pynite into alignment with the latest version of Numpy, which made major changes in how arrays are handled recently. It also updates Pynite's testing environment to directly install the versions listed as dependencies. This should help Pynite keep pace with future changes to its dependencies by flagging issues promptly via CI.
- Numpy >= 2.4 is now a requirement. This ensures the VTK renderer will handle plate results arrays properly.
pipnow installs dependencies during build testing. Pynite's testing suite now runs against the correct version of each dependency.
Rendering Improvements & Simplifications
- Added docstrings to the VTK
Rendererclass to help the user. - Enforced use of properties instead of attributes in the VTK
Rendererand added docstrings to properties help the user make decisions. - Removed the VTK
Renderer's properties that began with "set_". These were redundant and caused confusion. The prefix "set_" is no longer used to access or set any of theRenderer's properties.
Minor Rendering Improvements
- Pynite no longer struggles rendering load cases and combinations when no loads are present. This is especially helpful for rendering modal load combinations, which don't have loads (only masses).
- The pyvista plotter's "X" button now works just like pressing "q". This was an annoying pyvista-ism that led to error messages when closing the window with the "X" button.
Modal Analysis
- Added modal analysis. You can now find the natural frequencies and mode shapes of frame-type structures (plates not yet supported). A special thanks to @boustrephon for heading up this feature.
- Dropping support for python < 3.10.