Skip to content

Releases: MonashSmartStructures/ospgrillage

v0.6.0

23 Mar 03:05
c7c98dc

Choose a tag to compare

Summary

v0.6.0 release — shell element contour plots, stress resultant extraction, self-contained results files, and a GUI results viewer.

Shell contour plots (plot_srf)

  • New plot_srf() function renders contour plots over the shell mesh for three component families: shell forces (VxMz), nodal displacements (Dx, Dy, Dz), and section stress resultants (N11, N22, N12, M11, M22, M12, Q13, Q23).
  • Supports both Plotly (interactive 3-D) and matplotlib (2-D) backends.
  • Shell contours can be composed with beam diagrams by passing the Plotly figure as ax= to plot_bmd / plot_sfd / plot_tmd / plot_def.
  • Configurable colorscale, opacity, and colorbar display.

Stress extraction pipeline

  • extract_grillage_responses() now queries eleResponse(tag, "stresses") for shell elements, capturing 8 stress resultants at 4 Gauss points (32 values per element).
  • New stresses_shell DataArray in the results Dataset with dimensions (Loadcase, Element, Stress) using a dedicated Stress coordinate to avoid dimension conflicts with forces_shell.

Self-contained results files

  • .nc files saved via get_results(save_filename=...) now embed node coordinates and member-element connectivity, making them fully self-contained.
  • model_proxy_from_results() creates a lightweight _ModelProxy from a saved Dataset — all plotting functions work without the original OspGrillage object.

GUI results viewer

  • File > Open Results (.nc) loads saved results into an interactive viewer with BMD, SFD, TMD, Deflection, and Shell Contour tabs.
  • Shell Contour tab provides component, colorscale, and overlay controls (compose shell contours with beam diagrams).
  • Contour controls grey out when a non-contour tab is active and hide entirely for non-shell models.

GUI fixes

  • Disabled combo-box pseudo-state styles for better visual feedback.
  • 3-D lighting disabled on shell contours to remove specular artefacts.
  • BMD title no longer overwrites SRF title when composing; colorbar moved to the left.
  • Support markers handled gracefully with _ModelProxy.
  • fig.show() works correctly in IPython terminal sessions.

Documentation

  • plot_srf user guide in working_with_results.md with component tables, colorscale guidance, and GUI walkthrough.
  • Complete NumPy-style docstring for plot_srf with all 17 components across 3 families.
  • Developer docs for the stress extraction pipeline in package_design.md.
  • plot_srf and model_proxy_from_results added to API reference (api_postprocessing.rst).
  • GUI results viewer documented in ospgui.md with screenshots (Deflection, Shell Contour, Shell Contour + BMD overlay).
  • Shell-beam results section added to advanced_results.ipynb notebook demonstrating forces_shell, stresses_shell, plot_srf, and composition with beam diagrams.
  • Changelog entry for v0.6.0.
  • Version bumped from 0.5.3 to 0.6.0.

Test plan

  • 132 tests pass, 2 skipped
  • New notebook cells verified against live code
  • Test data regeneration confirms stresses_shell present in shell_beam .nc files
  • Sphinx docs build cleanly
  • GUI manual smoke test: open .nc file, cycle through all 5 tabs, toggle contour controls

v0.5.3

20 Mar 05:32
e2b40f4

Choose a tag to compare

What's Changed

  • fix: use temp file for Plotly 3D to avoid setHtml() 2MB limit by @ccaprani in #151
  • docs: document rigid-link offset kwargs and add show_rigid_links toggle by @ccaprani in #153
  • Format Python code with psf/black push by @github-actions[bot] in #152
  • fix: populate edge/transverse groups in shell_beam element list (#121) by @ccaprani in #154
  • fix: correct double-counted node coordinates in multi-span ortho mesh (#120) by @ccaprani in #155
  • chore: add functional test coverage and developer testing guide by @ccaprani in #156
  • Format Python code with psf/black push by @github-actions[bot] in #157
  • Format Python code with psf/black push by @github-actions[bot] in #158

Full Changelog: v0.5.2...v0.5.3

v0.5.2

19 Mar 22:49
b354d27

Choose a tag to compare

What’s Changed

v0.5.1

19 Mar 10:31
c9b22f0

Choose a tag to compare

What’s Changed

v0.5.0

18 Mar 13:28
39a6aba

Choose a tag to compare

Version 0.5.0

A usability-focused release: every result the model produces can now be visualised in one or two lines of code, the public API is cleaner and more consistent, and the documentation has been substantially rewritten.

Plotting: new functions and interactive backend

  • New convenience functions plot_bmd(), plot_sfd(), plot_tmd(), and plot_def() wrap plot_force() with the correct component pre-selected.
  • All plotting functions accept backend="plotly" for interactive 3-D force and deflection diagrams with rotation, zoom, and hover. Diagrams are rendered alongside the grillage mesh for immediate spatial context. Install with pip install ospgrillage[gui].
  • plot_model() visualises the grillage mesh geometry (backend="matplotlib" for a 2-D plan view, backend="plotly" for interactive 3-D). Replaces og.opsv.plot_model() / og.opsplt.plot_model().
  • Common keyword arguments across all plot functions: figsize, ax (existing matplotlib Axes), scale, title, color, fill, alpha, and show.
  • Members bitflag enum for filtering which member groups appear in a plot: combine with |, e.g. Members.EDGE_BEAM | Members.INTERIOR_MAIN_BEAM, or use the pre-defined composites Members.LONGITUDINAL, Members.TRANSVERSE, Members.ALL.
  • Plotly 3-D plots render supports, rigid links, shell quad elements, and transverse/edge beams alongside the longitudinal members.

API improvements

  • load_obj -> load and load_case_obj -> load_case in CompoundLoad.add_load(), LoadCase.add_load(), MovingLoad.add_load(), and OspGrillage.add_load_case(). The change is positional-compatible; only code using the old keyword names needs updating.
  • LoadVertex namedtuple replaces LoadPoint as the preferred name for load coordinate+magnitude tuples. LoadPoint is kept as a backwards-compatible alias.
  • beam_z_spacing renamed to beam_spacing with a DeprecationWarning (old name still accepted).
  • Section(offset_y=_): users can now supply centroidal section properties and let ospgrillage apply the parallel axis theorem automatically (I_offset = I_centroid + A * y²). No more hand-calculating transferred second moments of area when the beam centroid is offset from the grillage model plane.
  • Section(E=_) / Section(G=_) now raise ValueError (elastic moduli belong on Material).
  • get_results(load_case=_) accepts a name or list of names to retrieve only specific load cases: avoids compiling every moving-load increment.
  • plot_deflection renamed to plot_def (consistent with plot_bmd / plot_sfd).
  • Mesh.orthogonal attribute added (previously raised AttributeError on oblique meshes).
  • Edge transverse elements (start/end edges on oblique meshes) are now correctly assigned to their own member groups.

Dependencies

  • vfo is no longer a required dependency. Use og.plot_model() instead of og.opsplt.plot_model().
  • og.opsv and og.opsplt re-exports now emit DeprecationWarning.
  • Generated pyfiles no longer import vfo.

GUI

  • Code generation updated: uses og.plot_model() instead of og.opsv.plot_model().
  • ext_to_int_dist spinner replaced with a beam_spacing text input for full control over transverse member layout.
  • Fixed set_member() code generation (member names were unquoted).

Documentation

  • Super-T bridge tutorial rewritten as a step-by-step walkthrough; advanced results split into a separate notebook.
  • performing_analysis.md split into defining_loads.md; "Running analysis" merged into getting_results.md ("Analysis and results").
  • get_results() docstring now recommends the load_case= parameter for models with moving loads.
  • Section(offset_y=) documented in user guide with worked composite beam-slab example.
  • 15+ content fixes: removed non-existent set_material(), corrected link_nodes_width â�� beam_width, NodalForce â�� NodeForces, type= -> loadtype=, duplicate member assignments, Sphinx cross-references throughout, missing API methods added.
  • Removed stale html_static_path / html_theme_path from conf.py.

What's Changed

  • fix: resolve 5 API inconsistencies and improve usability by @ccaprani in #135
  • build(deps): bump codecov/codecov-action from 4.5.0 to 5.5.2 by @dependabot[bot] in #133
  • Format Python code with psf/black push by @github-actions[bot] in #132
  • build(deps): bump peter-evans/create-pull-request from 6.1.0 to 8.1.0 by @dependabot[bot] in #134
  • build(deps): bump release-drafter/release-drafter from 6 to 7 by @dependabot[bot] in #136
  • Format Python code with psf/black push by @github-actions[bot] in #137

Full Changelog: v0.4.1...v0.5.0

v0.4.1

10 Mar 02:40

Choose a tag to compare

Code changes

  • _OpsProxy dual-mode dispatch layer: single code path for live execution and script serialisation — no more parallel string-building branches.
  • Load assignment pipeline refactored from format strings to (func_name, args, kwargs) tuples; eval() removed from the analysis loop.
  • PatchLoading vertex validation is now cyclic-rotation-aware.
  • NumPy-style docstrings added to all public functions and classes.
  • Dead code removed from Analysis.__init__ (9 obsolete command-string attributes, analysis_arguments dict).
  • Envelope.get() rewritten without eval().
  • Minimum supported Python version raised from 3.9 to 3.10.
  • 30 new tests added; overall coverage rises from 71 % to 75 %.

Documentation overhaul

  • Navigation restructured into four top-level sections: Getting Started, User Guide, API Reference, and Additional Resources.
  • API reference split into per-module pages; Load module further subdivided into load types, load cases, and moving loads.
  • All source files renamed to match their page titles; source folder renamed rst/pages/.
  • Pandoc conversion artefacts removed throughout (escaped characters, malformed directives, broken anchors, Pandoc grid tables).
  • Docstrings improved for PatchLoading, LoadCase, CompoundLoad, and OspGrillage.
  • Getting Results page rewritten with an xarray concept overview and annotated examples.
  • Contributing guidelines page added; JOSS citation added to front page.
  • Jupyter example notebooks cleaned up (version-output cells and trailing empty cells removed).

Bug Fixes

  • Fix start_edge and end_edge node extraction across multiple edge groups by @ManavSharma23 in #131

New Contributors

Full Changelog: v0.4.0...v0.4.1

v0.4.0

09 Mar 03:57
b20abe4

Choose a tag to compare

What's Changed

  • Mass and displacement interpolator update by @justinngan92 in #72
  • Format Python code with psf/black push by @github-actions[bot] in #73
  • Replace openseespyvis with vfo by @alanjferguson in #74
  • build(deps): bump release-drafter/release-drafter from 5 to 6 by @dependabot[bot] in #81
  • build(deps): bump codecov/codecov-action from 3.1.1 to 4.1.0 by @dependabot[bot] in #83
  • build(deps): bump pypa/gh-action-pypi-publish from 1.5.1 to 1.8.12 by @dependabot[bot] in #84
  • build(deps): bump codecov/codecov-action from 4.1.0 to 4.5.0 by @dependabot[bot] in #95
  • build(deps): bump peter-evans/create-pull-request from 4.2.0 to 6.1.0 by @dependabot[bot] in #97
  • build(deps): bump pypa/gh-action-pypi-publish from 1.8.12 to 1.9.0 by @dependabot[bot] in #96
  • Fix plot module by @justinngan92 in #107
  • fix gh page workflow by @justinngan92 in #109
  • Fix numpy 2 and dependency compatibility issue by @justinngan92 in #126
  • GUI-Based Geometry Generator for Ospgrillage by @Prathamesh001 in #128

New Contributors

Full Changelog: v0.3.1...v0.4.0

v0.3.2

19 Sep 06:17
314adcd

Choose a tag to compare

What’s Changed

v0.3.1

29 Aug 13:53

Choose a tag to compare

What's Changed

  • Vertically-offset supports (accounts for deep beams)
  • Updates to documentation
  • Code refactoring
  • Bug fixes
  • Build system modernization

Detailed Changes

  • add test for rigidLink support feature
  • abstraction of equal_DOF function
  • refactor rigid_link function to be part of base class from concrete class
  • Added inline comments for understanding; corrected design lane formula
  • update codeblocks in Module description.rst (user guide page)
  • updated to use pyproject.toml only, per PEP621

Bug Fixes

  • fix result output of shell model not able to distinguish shell element with spring elements
  • fix multispan feature where supports are not assigned to intermediate supports in a multispan shell mesh
  • fix non-assignment issue of end edge members of oblique mesh when mesh edge angle is 0.
  • fix edge slab member not assigned in curve meshes.

Main PRs

v0.3.0

24 Oct 05:49
0e1c3ec

Choose a tag to compare

Highlights

  • rotational/translation spring supports
  • specific grillage member groups can now be assigned.
  • orthogonal meshing now possible with multispan feature

What's Changed

Full Changelog: v0.2.1...v0.3.0