Skip to content

Releases: robbievanleeuwen/section-properties

v3.0.0

03 Oct 05:55

Choose a tag to compare

⭐ 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.
  • sectionproperties API 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 poetry and nox.

💥 Breaking Changes

  • Update section property get() methods behaviour as per #287 to circumvent confusion surrounding material weighted properties. An analysis without material properties uses the get_{property}() syntax, while an analysis with material properties typically uses the get_e{property}() syntax with the added option of retrieving transformed section properties. See here for a list of the new get() 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() or plot_stress_vector() methods that belong to the StressPost object.
  • get_stress_at_point() method removed, use the more versatile get_stress_at_points() method instead.
  • Pythonic renaming of methods and variables, e.g. get_As() becomes get_as() for retrieving shear areas, moments and shears change from Mxx and Vx to mxx and vx.
  • 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__.py files, e.g. from sectionproperties.pre.library.primitive_sections import rectangular_section becomes from 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 .dxf files (#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-poetry for testing.
  • Move test_plastic_centroid() to test_plastic.py.
  • Various tests added.

👷 Continuous Integration

  • Add poetry integration 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 matplotlib plot directive.
  • Change examples from sphinx gallery to jupyter notebook style with nbsphinx.
  • Add intersphinx mappings.

💄 Style

  • Fully implement typing.
  • Added flake8 linter to pre-commit.
  • Added darglint docstring linter to pre-commit.
  • Added isort to pre-commit.
  • Added pyupgrade to pre-commit.
  • General refactor to improve readability and maintainability, e.g. reduce amount of code in section.py: PlasticSection -> plastic_section.py, StressPost and StressResult -> stress_post.py, SectionProperties -> post.py.
  • Generally changed type of a point from list[float] to a tuple(float, float).

Other

  • Restructured package by adding src folder.

v2.1.5

03 Jan 11:59

Choose a tag to compare

  • 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

28 Oct 05:56

Choose a tag to compare

  • 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() and add_bar() methods, thanks to @connorferster

Full changelog: 2.1.3...2.1.4

v2.1.3

02 Sep 10:10

Choose a tag to compare

  • Retrieve cross-section stresses at any point using get_stress_at_point() or get_stress_at_points(), many thanks to @normanrichardson
  • Fix plot legend formatting, thanks to @Agent6-6-6
  • Added ability for Geometry.align_center() and CompoundGeometry.align_center() to accept an x, y coordinate 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

15 Jul 08:02

Choose a tag to compare

  • Make rhino-shapley-interop an optional dependency

Full changelog: 2.1.1...2.1.2

v2.1.1

10 Jul 13:20

Choose a tag to compare

  • 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

20 Jun 04:56
8b0f07d

Choose a tag to compare

  • 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

08 Mar 00:10

Choose a tag to compare

  • 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 Geometry and CompoundGeometry .__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-interop and cad_to_shapely requirements

Full changelog: 2.0.2...2.0.3

v2.0.2

24 Jan 07:02

Choose a tag to compare

  • 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

16 Jan 09:14

Choose a tag to compare

  • Fix issue with library module