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)

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)

  • allow values for group based parameters in Project.parameters (allows to set vectorial or anisotropic group values. Previously, only allowed scalars) (!465)

  • 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)

  • 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)

  • 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)

  • fixed Model.plot_constraints unintentionally deleting meshes from the Model as a side effect; it now operates on a copy. (!463)

  • fixed plot.contourf raising unexpected keyword argument 'mask'. (!467)

  • fixed the data aspect ratio in plot.contourf when xlim/ylim are given. (!470)

  • fixed the error message raised by StorageBase._pre_save to reference the correct overwrite argument. (!479)

  • relaxed datatype validation for point coordinates and MaterialIDs so float32/int32/uint32 variants are also accepted, not just the exact reference dtype. (!475)

  • ot.mesh.difference no longer drops the spatial_unit attribute of the resulting mesh. (!468)

  • storage paths/filenames may now contain ~. (!461)

Features#

  • plot

    • added xlim and ylim as arguments for contourf (!465)

    • improved Meshes.plot (!465)

    • fixed line ordering by trying to sort by cell adjacency (!465)

    • contourf: corner elements were missing if none of their points were in the selected x- or y-limits; now they are checked explicitly. (!482)

  • Meshes

    • Meshes.from_mesh supports quadratic mesh (!465)

    • 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)

  • mesh

    • filepath is now attached to the mesh upon reading (with ot.mesh.read) (!465)

    • added ogstools.mesh.utils.pv_set_attr helper, replacing direct use of the deprecated pyvista.set_new_attribute (!474)

    • node_reordering (and the NodeReordering CLI call it wraps) gained a log parameter to control/silence its log output (!488)

  • 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)

    • Added deactivate_subdomain to Project.process_variables (!472)

  • 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)

    • functions of nested Variables are now stored internally as a list (instead of nested lambdas), which allows retrospectively modifying arguments and parameters (!487)

    • arguments of these stored functions can be strings which represent the names of data inside a mesh or MeshSeries, to allow for Variables depending on different input data (!487)

    • output_name can now explicitly be an empty string (!487)

Infrastructure#

  • added a make link_check command, running lychee, to check for broken links in the docs (!465)

  • CI no longer pins a specific Python version, just 3.x. (!480)

  • 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)

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)

  • fixed broken weblinks in documentation (!465)

  • 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)

New Examples#

  • new Meshes example (Selke) (!465)

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)

  • BHE example additionally shows how to access temperatures via the Components_BHE structure. (!480)

  • 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)

Tests#

  • added end-to-end example-Project test coverage and shared property-type-registry tests for materiallib. (!464)

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 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)

JOSS paper#

  • OGSTools paper draft submitted to the Journal of Open Source Software (paper/paper.md, paper/paper.bib) (!321)