Skip to content

Releases: ritchie46/anaStruct

v1.6.2

07 Nov 02:25
728babc

Choose a tag to compare

It's been nearly a year since the last release; I'll try not to have quite so much latency on future releases! The most important change in this update is to add full support for Python 3.13 and 3.14, now that both are officially out of development. Binary wheels will be built and made available for all major operating systems in both Python versions. But a couple small features and bug fixes are also included here:

New features:

  • Add new get_stiffness_matrix() function (thanks @bldrkamal !)
  • Show internal hinges as hollow circles in plots

Bug fixes:

  • Fix array error in plotting shear force in some circumstances
  • Return node id, not node index, from nearest_node()
  • Fix label plots all showing up on horizontal axis (thanks @sononicola !)
  • Fix build issue due to revoked sub-dependency in poetry.lock (thanks @jonbiemond !)

What's Changed

New Contributors

Full Changelog: release-v1.6.1...release-v1.6.2

v1.6.1

16 Oct 10:07
19fba5b

Choose a tag to compare

This is primarily a maintenance release, fixing a couple minor bugs in autoscaling diagrams and some broken examples in the documentation. It does also add two minor new features:

  1. Build binary wheels for aarch64 (i.e. for Linux machines running on Apple's ARM processors)
  2. Add total deflection as a simple output to element results
    • No more manually adding node displacements to element deflections! This likely won't matter at all if you're analysing a truss, but if you're analysing a beam, these new "total deflection" results should be the numbers you actually expect.

What's Changed

  • Remove wheel build from test.yaml, add aarch64 wheels to publish by @smith120bh in #285
  • Build aarch64 wheels too (which requires QEMU) by @smith120bh in #286
  • Add overload type definitions to system functions by @smith120bh in #321
  • Add Total Deflection Output by @smith120bh in #302
  • Remove non-existent plot_backend param from examples by @smith120bh in #322

Dependabots

Full Changelog: release-v1.6.0...release-v1.6.1

v1.6.0

20 Jul 11:54
9af5e05

Choose a tag to compare

This release makes two key updates:

  1. Upgrade to Numpy v2.0.0 compatibility
    • Importantly, this required deprecating Python 3.9. Theoretically, if you are still using the Numpy 1.x series, nothing should have broken Python 3.9, but automatic testing of Python 3.9 is now dropped, so use at your own risk!
  2. Build and distribute platform-specific binary wheels - which should now make this package both more efficient and faster to install

And while it won't make any difference to anaStruct users, for any developers or forks, anaStruct has now swapped to using poetry for packaging and dependency management.

What's Changed

  • Swap to Poetry as package manager, build binary wheels by @smith120bh in #281

Dependabots

Full Changelog: release-v1.5.1...release-v1.6.0

v1.5.1

01 Apr 21:01
66cca27

Choose a tag to compare

This minor release adds one new feature - custom plot colours. It is otherwise a maintenance release with some minor updates to accommodate the newest versions of our dependencies.

What's Changed

Dependabots

New Contributors

Full Changelog: release-v1.5.0...release-v1.5.1

v1.5.0

30 Oct 11:38
66931c4

Choose a tag to compare

This release includes multiple breaking changes that had been building up in the backlog. Hopefully these changes will now make various parts of anaStruct make more intuitive sense, but some minor updates may be required to scripts or APIs that use this package as a result.

Breaking Changes

  1. Definitions of "y" and "z" axis directions have been made fully consistent throughout all user-facing and internal code. The "y" axis is now always the vertical, in-plane axis, and the "z" axis is now always the out-of-plane axis. Changes generally do not affect inputs, but several outputs are affected. For example, "Ty" and "phi_y" are now "Tz" and "phi_z", respectively.
  2. insert_node() now splits up an element in-place, rather than re-creating the entire system. As a consequence, the function will now no longer lose your loads and supports! While technically breaking behaviour, this is probably also more intuitive behaviour.
  3. get_element_result_range() now by default returns the maximum absolute value of the given unit along the entire length of each element, rather than the first mesh value. A new optional parameter called minmax can customise this behaviour to alternatively return the "min", "max", or "both".
  4. get_node_results_system() and get_node_displacements() now return a list of dictionaries rather than a list of long tuples by default or when node_id=0. This now mirrors the behaviour of the get_element_result*() functions, and should be easier to read.

What's Changed

  • Return min/max values with get_element_result_range() by @smith120bh in #212
  • Return a list of dicts from get_node_results_system() & get_node_displacements() by @smith120bh in #213
  • Rewrite insert_node() to manipulate the existing system by @smith120bh in #215
  • Correctly split triangular q-loads in insert_node() by @smith120bh in #216
  • Remove orphaned nodes in remove_element() by @smith120bh in #217
  • Fix show_results() plotting by @smith120bh in #218
  • Clean up all y and z coordinates by @smith120bh in #219

Full Changelog: release-v1.4.4...release-v1.5.0

v1.4.4

29 Oct 11:03
f21f0f3

Choose a tag to compare

This update is primarily a maintenance release, though with a couple notable additions:

  • Location inputs have been unified such that every function now expects the same "VertexLike" input - which includes our existing Vertex object, as well as any Sequence (list or tuple) or two numbers.
  • New function add_sequential_elements() has been added - which is very similar to the existing add_element_grid(), but with a more accurate name and able to accept coordinates as Vertex or VertexLike objects, to match with coordinates inputs on other functions
  • All functions throughout the codebase now have full docstrings, which should make both using the functions (if you're using an IDE) and contributing to the anastruct code easier
  • VS Code configuration has been thoroughly updated, to hopefully make it easier than ever to help contribute to the anastruct codebase! :-)

What's Changed

  • Add EA and EI values to element creation documentation by @ajossorioarana in #189
  • Update VS Code Config to recommend extensions by @smith120bh in #193
  • Include github actions in dependabot by @smith120bh in #196
  • Docstring all the things by @smith120bh in #202
  • Create new add_sequential_elements() function by @smith120bh in #211
  • Handle Vertex and VertexLike types consistently by @smith120bh in #214

Dependabots

New Contributors

Full Changelog: release-v1.4.3...release-v1.4.4

v1.4.3

28 Aug 12:54
e9d5ec6

Choose a tag to compare

This is exclusively a bugfix release, correcting a regression in the find_node_id() function, fixing the handling of pinned nodes that have only one element connected to them, and adding some meaningful error-handling to non-integer node and element ids.

What's Changed

  • Fix regression in find_node_id() with typeof vertex == Vertex by @smith120bh in #178
  • Add restraint to a node that has exactly one pinned connection by @smith120bh in #146
  • Add error-handling to node & element id data types by @smith120bh in #179

Dependabots

Full Changelog: release-v1.4.2...release-v1.4.3

v1.4.2

08 Jun 08:20
f6e714e

Choose a tag to compare

This release represents few changes in the actual user-facing package, but significant updates to validation testing, packaging practices, and typing. Specifically:

  • There is now a full suite of automated pytest validation tests verifying that anaStruct does, in fact, give the same results as Euler-Bernoulli analytical equations. Thank you to all the new contributors who helped add these tests!
  • The file structure and package definitions in anaStruct have been updated to modern best practices, including swapping from a setup.py file to pyproject.toml, updating all the GitHub workflows, and adding some default/recommended VS Code configuration to help any contributors to this package work more easily!
  • Full type checking has been implemented throughout anaStruct, and a py.typed marker file has been added for anyone using anaStruct as a library (you can remove those # type: ignores on your anastruct imports now!) In typing everything, a few scattered bugs were also identified and fixed (nothing that would have given a wrong result, but several little things that would have caused error messages), especially around setting loads on multiple elements at once.

What's Changed

  • Add some default VS Code configuration by @smith120bh in #134
  • Validation of a simply-supported beam with UDL by @smith120bh in #136
  • Documentation by @someparsa in #135
  • Convert from setup.py to pyproject.toml by @smith120bh in #139
  • Simple beam with a point load validation by @abigailwong1 in #141
  • Validation with Simply Supported Beam and Two Equally Spaced Point Loads by @liamjsy in #142
  • Cantilever beam w UDL validation by @abigailwong1 in #147
  • Fix missing indent on a test by @smith120bh in #150
  • Adding three validation cases for beams by @BehnamClearCalcs in #148
  • Added validation cases by @liamjsy in #143
  • Explicitly set the content-type for README.md by @smith120bh in #160

Dependabots

New Contributors

Full Changelog: release-v1.4.1...release-v1.4.2

v1.4.1

20 Feb 12:08
9452e16

Choose a tag to compare

What's Changed

  • Switch package matplotlib to flexible dependency by @smith120bh in #116
  • Switch FEM Tests to pytest by @smith120bh in #132
  • Also add the q_loads in load combinations (Fixes #121) by @smith120bh in #133

Dependabots

Full Changelog: release-v1.4.0.1...release-v1.4.1

v1.4.0.1

12 Jan 02:36
da7f1fa

Choose a tag to compare

Very minor update to avoid an error message being over-issued.

What's Changed

  • Don't throw inclined roller error if angle is a multiple of 90 degrees by @smith120bh in #114