Releases: robbievanleeuwen/section-properties
Releases · robbievanleeuwen/section-properties
v3.0.0
⭐ Highlights
- New, unambiguous section property retrieval with
get()methods, see an example here. - Improved stress plotting options (new colorbar features, mesh opacity, plot selected materials), see an example here.
- Improved documentation style and automation.
sectionpropertiesAPI now has full typing coverage.- Significantly expanded examples in the documentation.
- Add support for Python 3.11.
- Improved workflow, CI and contributor experience by introducing
poetryandnox.
💥 Breaking Changes
- Update section property
get()methods behaviour as per #287 to circumvent confusion surrounding material weighted properties. An analysis without material properties uses theget_{property}()syntax, while an analysis with material properties typically uses theget_e{property}()syntax with the added option of retrieving transformed section properties. See here for a list of the newget()methods and here for a discussion surrounding this issue. - Stress plotting methods have been simplified to improve maintainability and code repetition. You can now plot stress results by using the
plot_stress()orplot_stress_vector()methods that belong to theStressPostobject. get_stress_at_point()method removed, use the more versatileget_stress_at_points()method instead.- Pythonic renaming of methods and variables, e.g.
get_As()becomesget_as()for retrieving shear areas, moments and shears change fromMxxandVxtomxxandvx. - Concrete section library - renamed argument names to be more pythonic, reinforcement now requires an area and diameter.
- Dropped support for Python 3.8 (#289).
🚀 Features
- Packaging and dependency management with poetry.
- Improve length/readability of imports by placing key classes in
__init__.pyfiles, e.g.from sectionproperties.pre.library.primitive_sections import rectangular_sectionbecomesfrom sectionproperties.pre.library import rectangular_section - Significant analysis performance and readability improvements (#293, #298) thanks to @TLCFEM.
- Allow unlipped cee and zed sections (#300), thanks to @smith120bh.
- Export analysis results to fibre sections that can be used by the suanPan FEM platform (#295), thanks to @TLCFEM.
- Allow spline options to be specified when importing
.dxffiles (#292), thanks to @ccaprani. - Improved plotting options, including colorbar string formatting, mesh opacity options, custom colorbar limits, custom colorbar label, option to only plot selected materials (#291).
- Added option to specify minimum mesh angle (#290).
- Added support for Python 3.11 (#289).
🐛 Fixes
- Fix symmetric difference operation not auto-detecting holes in the geometry (#297), thanks to @connorferster.
- Provide clarity on how to create arbitrary sections without a facet list (#294).
- CGS solver fix (#268), thanks to @simo-11.
🚨 Testing
- Use
nox&nox-poetryfor testing. - Move
test_plastic_centroid()totest_plastic.py. - Various tests added.
👷 Continuous Integration
- Add
poetryintegration and detailed contributor guidelines. - Added labeller and release drafter automation.
- Added pre-commit checks.
- Updated all workflows.
📚 Documentation
- Changed documentation theme to furo.
- General overhaul of the documentation.
- Auto-generate API documentation using
sphinx.ext.autodoc. - Auto-generate images in documentation using the
matplotlibplot directive. - Change examples from sphinx gallery to jupyter notebook style with
nbsphinx. - Add
intersphinxmappings.
💄 Style
- Fully implement typing.
- Added
flake8linter to pre-commit. - Added
darglintdocstring linter to pre-commit. - Added
isortto pre-commit. - Added
pyupgradeto pre-commit. - General refactor to improve readability and maintainability, e.g. reduce amount of code in
section.py:PlasticSection->plastic_section.py,StressPostandStressResult->stress_post.py,SectionProperties->post.py. - Generally changed type of a point from
list[float]to atuple(float, float).
Other
- Restructured package by adding
srcfolder.
v2.1.5
- Fix shapely 2.0 imports and STRtree implementation, with thanks to @normanrichardson
- Add support for python 3.10, drop support for python 3.7
Full changelog: 2.1.4...2.1.5
v2.1.4
- Add side bar option to
concrete_rectangular_section(), thanks to @Agent6-6-6 - Fix difference operation raising an error, thanks to @connorferster
- Added
concrete_column_section()andadd_bar()methods, thanks to @connorferster
Full changelog: 2.1.3...2.1.4
v2.1.3
- Retrieve cross-section stresses at any point using
get_stress_at_point()orget_stress_at_points(), many thanks to @normanrichardson - Fix plot legend formatting, thanks to @Agent6-6-6
- Added ability for
Geometry.align_center()andCompoundGeometry.align_center()to accept anx,ycoordinate as a valid input, thanks to @connorferster - Only require a warping analysis to be performed for a stress analysis if the shear force or twisting moment is non-zero.
Full changelog: 2.1.2...2.1.3
v2.1.2
- Make rhino-shapley-interop an optional dependency
Full changelog: 2.1.1...2.1.2
v2.1.1
- Use Lagrangian multiplier for calculation of torsion properties
- Add more plotting options to
plot_geometry()
Full changelog: 2.1.0...2.1.1
v2.1.0
- Add
bulb_section()to steel sections library, thanks to @zmpulse - Add progress bar and pretty output using rich
- Fix logic of generating holes in CompoundGeometry using the subtraction method, thanks to @connorferster
- Expand testing suite and documentation, thanks to @czarified
- Fix bug with plastic calculation when material properties are specified
- Add warning message for disconnected geometries when trying to calculate warping properties, thanks to @connorferster
- Fix bug with material properties not being assigned when using the
CompoundGeometry.from_points()method, thanks to @connorferster
Full changelog: 2.0.3...2.1.0
v2.0.3
- Add top reinforcement to concrete section library sections
- Add option to specify concrete circle area to
concrete_circular_section() - Update concrete section library to prevent overlapping geometries
- Fix implementation of
GeometryandCompoundGeometry.__sub__()method - Add method to detect overlapping geometry errors and generate warning
- Add option to create coarse mesh (no angle or area constraints)
- Update
rhino-shapley-interopandcad_to_shapelyrequirements
Full changelog: 2.0.2...2.0.3
v2.0.2
- Add circular_section_by_area() in the section library
- Add option to define reinforcement by area rather than diameter for all concrete sections in the section library
- Fix bug in super_t_girder_section() which caused type 5 to be returned in all cases
- Require matplotlib >= 3.4 for CenteredNorm
v2.0.1
- Fix issue with library module