Releases: ccaprani/pycba
v0.8.0
What’s Changed
- Nonlinear (elasto-plastic) beam analysis (
NonlinearBeamAnalysis) — #140 - Non-prismatic (variable-EI) elements (
SectionEI) — #139 - Imposed-curvature (initial-strain) loads (
add_ic, load type 6) — #139 - plus Markdown (MyST) documentation migration
Verification
- Full suite: 117 passed (incl. the new
test_rejects_nonprismatic_member). - Docs build warning-free; the prismatic-only note renders correctly in the nonlinear tutorial.
v0.7.0
v0.7.0
Features
Trapezoidal (linearly varying) distributed load (#101)
New load type 5 supports linearly varying distributed loads. Full-span form [span, 5, w1, w2] applies intensity w1 at the left end varying to w2 at the right. Partial form [span, 5, w1, w2, a, c] applies the load starting at position a over cover length c. A convenience method BeamAnalysis.add_trap() is also provided.
Coincident load effects on envelopes (#122)
When computing envelopes from a moving vehicle analysis, the co-existing value of the other effect (V or M) at the truck position that caused each envelope extreme is now tracked. New Envelopes attributes: Vco_Mmax, Vco_Mmin, Mco_Vmax, Mco_Vmin. The critical_values() output now includes "Vco" and "Mco" keys. Coincident values are preserved through augment() and zero_like().
Envelope addition (#92)
New Envelopes.sum() method for element-wise addition of compatible envelopes, enabling superposition of load effects from different sources (e.g. patterned UDL + moving vehicle envelopes).
Vehicle traverse range control (#53)
New pos_start and pos_end parameters on BridgeAnalysis.run_vehicle() restrict the vehicle traverse to a specified range. Useful for transverse deck analyses where the vehicle is confined to specific lanes.
Bug Fixes
Influence line IndexError (#89)
Fixed InfluenceLines.get_il() raising IndexError when the point of interest does not fall exactly on the result grid. Root cause was overly tight floating-point tolerance and zero-valued padding indices at span boundaries.
What’s Changed
- Format Python code with psf/black push (#129) @github-actions[bot]
- Add coincident load effects to Envelopes (#128) @ccaprani
- Add trapezoidal (linearly varying) distributed load type (#127) @ccaprani
- Add pos_start/pos_end to BridgeAnalysis.run_vehicle() (#126) @ccaprani
- Add Envelopes.sum() for element-wise envelope addition (#125) @ccaprani
- Fix InfluenceLines.get_il() IndexError for arbitrary poi values (#124) @ccaprani
v0.6.0
v0.6.0 — Release Notes
New Features
- Prescribed displacements: Support for imposing known displacements at any DOF, enabling modelling of support settlements. Specify via the
Dargument toBeamAnalysis. - Spring support reactions: Spring forces are now reported in
beam_results.Rs(upward positive, i.e.-k_s × u).
Bug Fixes
- Load superposition: Fixed
MemberResults.__add__which was incorrectly accumulating shear (V) instead of rotation (R) when superimposing load cases. - Spring stiffness double-counting: Fixed a bug where spring stiffness was being added to the global stiffness matrix twice, giving incorrect results for spring-supported beams.
- Spring reaction sign: Spring forces in
beam_results.Rsare now reported with correct sign (upward positive).
Improvements
- Theory documentation: Expanded
theory.ipynbto cover global stiffness matrix assembly, spring supports, boundary condition enforcement, prescribed displacements, and reaction recovery. - Type definitions: Shared types (
LoadType,LoadMatrix,LoadCNL,MemberResults) consolidated intotypes.py; explicit API exports replace wildcard imports. - CI: Dropped Python 3.8 support; added Python 3.12 and 3.13 to the test matrix. Minimum supported version is now Python 3.9.
- Docs build: Replaced the unmaintained
ammaraskar/sphinx-actionwith a native build step, fixing the GitHub Pages deployment.
Full Changelog: v0.5.2...v0.6.0
v0.5.2
What's Changed
- Added some theory docs by @ccaprani in #83
- Minor fix for plot envelopes by @RoccoRaimo in #90
- Upgrade scipy to cumulative_trapezoidal by @ccaprani in #100
New Contributors
- @RoccoRaimo made their first contribution in #90
Full Changelog: v0.5.1...v0.5.2
v0.5.1
v0.5
What’s Changed
- Deflection shape fixes for all element types (#77) @ccaprani
- corrected released end forces for etype=3 (Pinned-Fixed) (#75) @tpanagiotakos
- Format Python code with psf/black push (#74) @github-actions
- Bump codecov/codecov-action from 4.1.0 to 4.1.1 (#76) @dependabot
v0.4.2
v0.4.1
v0.4.0
What’s Changed
- Added new automatic load patterning for continuous beams
- Added plot of load patterning envelopes
- Added new examples notebook on load patterning & envelopes
- Added test for enveloping.
- Corrected that BMDs are plotted positive below the axis [per #48]
PRs:
v0.3
What’s Changed
Features
- AS5100.2 Appendix C example (#47) @ccaprani
- Added functionality to have static loads as well as moving vehicle loads in a
BridgeAnalysis(#47). - Renamed the
from_convoytomake_trainand moved outsideVehicleclass (#47). - Updated
make_trainexample accordingly (#47). - Added utility functions for loads (#38) @ccaprani