We are happy to announce the release of OGSTools 0.8.2!
Links
OGSTools 0.8.2 Release Notes
Python 3.12-3.14
OGS 6.5.8
3rd of September 2026
Breaking changes
API breaking changes
- ogs6py: BHE `flow_and_temperature_control` types were renamed/consolidated to match OGS 6.5.8.dev (e.g. `FixedPowerConstantFlow` and the various curve-based variants are replaced by `InflowTemperature`, `Power`, `BuildingPower`), and `flow_rate` must now be supplied for every type (as a string, e.g. referencing an OGS parameter by name). ([!455]( [ogs6py]: Update BHE to new ogs (!455) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
Changes (non API-breaking)
Bugfixes
- fixed sorting in `Meshes.from_files` (if `domain_key` was not in the beginning, it didn’t sort correctly) ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- allow values for group based parameters in `Project.parameters` (allows to set vectorial or anisotropic group values. Previously, only allowed scalars) ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- fixed `Project.process_variables.add_bc` and `Project.process_variables.add_st` to allow all different kinds of types. Previously, some
checks caused unintentional errors. ([!471]( [Project] improve process variable interface (!471) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- fixed `MeshSeries.probe` with linear interpolation and `cell_data` yielding `nan` at the mesh boundary as cell centers are used for interpolation. Now used nearest neighbor as a fallback. ([!473](Xdmf bugfix (!473) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- fixed reading `.xdmf` data where some data field are only present in the first timestep. Now they will also be read for later timesteps. ([!473](Xdmf bugfix (!473) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- fixed `Model.plot_constraints` unintentionally deleting meshes from the `Model` as a side effect; it now operates on a copy. ([!463]( model.plot_constraints no longer deletes meshes from model (!463) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- fixed `plot.contourf` raising `unexpected keyword argument ‘mask’`. ([!467](Plot / contour: fix got unexpected keyword argument 'mask' (!467) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- fixed the data aspect ratio in `plot.contourf` when `xlim`/`ylim` are given. ([!470]( fix data aspect for plot.contourf (!470) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- fixed the error message raised by `StorageBase._pre_save` to reference the correct `overwrite` argument. ([!479]( Changed error message in StorageBase._pre_save and Meshes.save() documentation (!479) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- relaxed datatype validation for point coordinates and `MaterialIDs` so `float32`/`int32`/`uint32` variants are also accepted, not just the exact reference `dtype`. ([!475]( Change datatype validation (!475) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `ot.mesh.difference` no longer drops the `spatial_unit` attribute of the resulting mesh. ([!468]( Preserve `spatial_unit` in `ot.mesh.difference` (!468) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- storage paths/filenames may now contain `~`. ([!461]( Relax requirements on allowed pathes for storage (!461) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
Features
- plot
- added `xlim` and `ylim` as arguments for `contourf` ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- improved `Meshes.plot` ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- fixed line ordering by trying to sort by cell adjacency ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `contourf`: corner elements were missing if none of their points were in the selected x- or y-limits; now they are checked explicitly. ([!482]( [plot] fix contourplot xlim ylim corners (!482) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `Meshes`
- `Meshes.from_mesh` supports quadratic mesh ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `Meshes` now support `output_names`, saved/restored via `Meshes.save()`/`from_file()`/`from_folder()` and used by `Meshes.plot` and `Model.plot_constraints` for labeling ([!484]( plot output names (!484) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `mesh`
- `filepath` is now attached to the mesh upon reading (with `ot.mesh.read`) ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- added `ogstools.mesh.utils.pv_set_attr` helper, replacing direct use of the deprecated `pyvista.set_new_attribute` ([!474]( Adds `pv_set_attr` util (!474) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `node_reordering` (and the `NodeReordering` CLI call it wraps) gained a `log` parameter to control/silence its log output ([!488]( Controlled log to warning and fix for Nodereorder (!488) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `Project`
- `BuildTree.populate_tree` now can handle dicts as the element text
(in this case the key and value pairs will create corresponding subelements) (\[!472\]( https://gitlab.opengeosys.org/ogs/tools/ogstools/-/merge_requests/472 ))
- Added `deactivate_subdomain` to `Project.process_variables` ([!472]( Deactivate subdomain (!472) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `Variable`
- `data_name` of a `Variable` is now also looked for in the attributes of a mesh (e.g. `points`) or `MeshSeries` (e.g. `timevalues`) ([!487]( https://gitlab.opengeosys.org/ogs/tools/ogstools/-/merge_requests/487 ))
- functions of nested `Variable`s are now stored internally as a list (instead of nested lambdas), which allows retrospectively modifying arguments and parameters ([!487]( https://gitlab.opengeosys.org/ogs/tools/ogstools/-/merge_requests/487 ))
- arguments of these stored functions can be strings which represent the names of data inside a mesh or `MeshSeries`, to allow for `Variable`s depending on different input data ([!487]( [variables] refactoring of function evaluation (!487) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- `output_name` can now explicitly be an empty string ([!487]( [variables] refactoring of function evaluation (!487) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
Infrastructure
- added a `make link_check` command, running `lychee`, to check for broken links in the docs ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- CI no longer pins a specific Python version, just `3.x`. ([!480](Paper review 1 (!480) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- gallery hash checks now exclude plots whose figures embed computational metrics (e.g. solver time), since those vary between runs; pre-commit no longer reformats `paper.md`, and `codespell` now also skips `*.svg`/`*.html`. ([!321](JOSS Paper (!321) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
Documentation
- added `CONTRIBUTING.md` and linked it from `README.md`, the docs nav, and the docs site; split developer and maintainer guides; fixed install instructions per the JOSS review. ([!480](Paper review 1 (!480) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- fixed broken weblinks in documentation ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
- submitted the OGSTools paper to the Journal of Open Source Software (`paper/paper.md`, `paper/paper.bib`); added a graphical abstract linked from `README.md`. ([!321](JOSS Paper (!321) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
New Examples
- new `Meshes` example (Selke) ([!465]( Many improvements (!465) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab ))
Updated Examples
- reworked simple simulation example, added missing `print()`/`plt.show()` calls across gallery examples, and other example polish from the JOSS paper review. ([!480](Paper review 1 (!480) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- BHE example additionally shows how to access temperatures via the `Components_BHE` structure. ([!480](Paper review 1 (!480) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- quickstart examples now `plot_convergence` behaviour as a heatmap of the relative error per iteration/timestep (`sim.log.plot_convergence(metric=“dx_x”)`) instead of clock time per solver phase. ([!321](JOSS Paper (!321) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
Tests
- added end-to-end example-`Project` test coverage and shared property-type-registry tests for `materiallib`. ([!464]([Materiallib] Tighten YAML schema and validate typed property parameters (!464) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
Beta testing features
- `materiallib` YAML schema tightened: a property entry must now be a single mapping (lists of entries are no longer accepted), the `type` key is required, and unsupported keys are rejected. Property parameters are validated against a shared type registry. ([!464]([Materiallib] Tighten YAML schema and validate typed property parameters (!464) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
- `materiallib` YAML schema: materials must now group their properties under top-level `domains` (`medium`/`phase`/`component`) instead of a flat `properties` block. Bundled example materials were migrated accordingly. ([!451](Materiallib: grouped top level domains (!451) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))
JOSS paper
- OGSTools paper draft submitted to the Journal of Open Source Software (`paper/paper.md`, `paper/paper.bib`) ([!321](JOSS Paper (!321) · Merge requests · ogs / OpenGeoSys Tools / OGSTools · GitLab))