OGSTools 0.8.0 Release Notes
Python 3.11-3.14
OGS 6.5.7
Breaking changes
API breaking changes
New Core Framework and Storage System
- New unified framework: Introduced
Model,Simulation, andResultclasses
that provide a complete workflow from setup to analysis. See the new
plot_framework_short.pyexample for a quick overview. - Storage system: All major classes (
Model,Meshes,MeshSeries,Project)
now inherit fromSaveBaseand support:- Unified
save()/from_folder()/from_id()interface - Automatic backup on overwrite (configurable via
SaveBase.Backup) - Archive mode for creating self-contained copies
- ID-based organization in user-defined storage paths
- Unified
- Simulation controllers:
- Removed deprecated
ogstools.simulationmodule - New
SimulationControllerbase class withOGSInteractiveControllerand
OGSNativeControllerimplementations
- Removed deprecated
- Log parsing: Added
Logclass for parsing and analyzing OGS log files with
methods for convergence analysis and simulation status tracking
MeshSeries and Meshes
- removed the Mesh class entirely, MeshSeries is now a Sequence of native
pyvista.UnstructuredGrid's. MeshSeries.scalechanges the calling object and returns it.MeshSeries.read_interp->MeshSeries.mesh_interpMeshSeries.probe->MeshSeries.probe_valsMeshSeries.extract_probe->MeshSeries.probeMeshSeries.aggregate_over_domain->MeshSeries.aggregate_spatialMeshSeries.aggregate_over_time->MeshSeries.aggregate_temporalMeshSeries.plot_domain_aggregate->ms.plot_line(variable.max/mean/...)- removed deprecated
MeshSeries.plot_probe->probe = MeshSeries.probe(...); probe.plot_line(...) MeshSeries.save()signature changed: now uses unified storage interface with
target,overwrite,dry_run, andarchiveparametersMeshesnow supports storage operations:save(),from_folder(),from_id()Meshes.__init__()now accepts optionalidparameterMeshesimplements__eq__()and__deepcopy__()for proper comparison and copying
Project
Project.__init__()signature changed:output_fileis now optional (defaults to auto-generated path if using IDs)- Added
idparameter for storage system integration
Projectnow inherits fromSaveBaseand supportssave(),from_folder(),
from_id()operationsProject.inputfilerenamed toProject.input_fileProjectimplements__eq__(),__deepcopy__(),__repr__(), and__str__()- Removed
Project.restart; useSimulation.restartinstead.
Logfile Parser
- Add monitor for live logfile parsing in a Jupyter notebook
step_start_timecolumn added totime_step_vs_iterations()analysis
Execution
- Support for parallel execution with MPI
Logparser
- OGS V1 log format no longer supported; only V2 is parsed
Other API Changes
Matrix.mean->Matrix.tensor_meanmeshlibhas been renamed tomesh- classes to generate a new mesh (e.g.
Layer, LayerSet, Surface, ...) have been moved to a submodulecreate.ot.mesh.create.LayerSet.to_region_tetraeder->ot.mesh.create.LayerSet.to_region_tetrahedronot.mesh.create.dataframe_from_csvdoesn't require a parameters .csv anymore,
but either a mapping of layer_id to surface files, or the directory containing
all surfaces files (in that case the layer_ids map to the sorted file list)ot.mesh.geo.depthnow requires top_mesh as an argument.ot.mesh.geo.p_fluidwas removed. See theStress analysisexample for how
to calculate fluid pressure now.ot.mesh.file_io.save()signature changed: mesh parameter now comes first
Deprecations
Removed Modules
- Removed
ogstools.simulationmodule (replaced byogstools.coreframework)
Examples
Changes (non API-breaking)
Bugfixes
- plot.line seems to have been missing the very first point of a linesample, now fixed
- cli dashed arguments now work as expected
- cli tools with legitimately underscored arguments (e.g.
addDataToRaster,checkMesh,
generateGeometry) no longer have their argument names incorrectly converted to hyphens
Features
New Core Framework
- Model: New class combining project file, meshes, and execution settings into
a complete OGS model. Can be created from components or loaded from disk.Model.run()executes the simulation and returns aSimulationobjectModel.run(<path>)writes the simulation results into the specified folderModel.cmdproperty to inspect or reuse the full OGS command stringModel.plot_constraints()visualizes boundary conditions and source terms- Supports all storage operations (save, load by folder or ID)
- Simulation: Represents a completed (ongoing by SimulationController) OGS simulation with model and results.
Simulation.meshseriesprovides access to the simulation outputSimulation.logprovides access to parsed log file as aLogobjectSimulation.statusandSimulation.status_strtrack simulation state- Full save/load support with automatic storage of model, results, and logs
Simulation.restartallows restarting a simulation from a previous run.
- Execution: Manages OGS execution parameters (parallelization, logging, etc.)
- Configurable OMP threads and assembly threads
- Execution from YAML files or programmatic configuration
ogsparameter accepts binary directory, container path (.sif/.squashfs), or URL- Built-in container URLs:
Execution.CONTAINER_SERIAL/CONTAINER_PARALLEL(OGS 6.5.7) - Auto-detection via
OGS_BIN_PATHenv var or$PATHifogsis not specified - Site-wide defaults via
OGS_EXECUTION_DEFAULTSenv var pointing to a YAML file
(seeexecution_default_example.ymlfor reference) Execution.from_default()/Execution.defaultfor sharing a session-wide configcmdproperty exposes the full OGS command string
- Log: Parser and analyzer for OGS log files
convergence_newton_iteration()andconvergence_coupling_iteration()extract
convergence dataplot_convergence()visualizes convergence behaviorsimulation_info()andtermination_info()provide simulation metadata
- Storage System (
SaveBase): Unified base class for all saveable objects- Configurable user path via
SaveBase.Userpathand backup strategy viaSaveBase.Backupflag - ID-based organization in class-specific subdirectories
- Archive mode for creating portable, self-contained copies
- Temporary storage support for intermediate objects
- Configurable user path via
mesh
- added
ot.mesh.node_reorderingto fix node ordering of a mesh to comply with OGS standards - added
ot.mesh.validateto check, whether a mesh complies with OGS standards
gmsh_tools
- added more control over the discretization for
remesh_with_triangles.
MeshSeries
- added support for logarithmic scaling in
ot.MeshSeries.plot_time_slice. - new functions for renaming domain and subdomains
- can now be scaled spatially / temporally in the Constructor
- added
interpolatemethod, to interpolate the MeshSeries data on a new mesh - added
comparemethod toot.MeshSeries. - Storage support: can be saved and loaded by folder or ID
Meshes
- save function performs partmesh if number of partitions are given, with optional dry_run
- create_partitioning() and create_metis if vtu files are already present
- subdomains() -> subdomain, domain_name() -> domain_name (with setter)
plotmethod displays domain mesh and subdomains (2D domain only for now)remove_materialmethod removes specified material id from domain and
updates subdomains accordinglymodify_namesmethod extends mesh names with prefix and/or suffixMeshes.from_meshnow also works for 3D domain meshes- now checks datatypes of MaterialIDs, bulk_node_ids, bulk_element_ids and coordinates upon saving
from_file()method to restore from meta.yaml- Storage support with metadata preservation
Project
- dependencies() return a list of referenced/needed files (meshes, xml includes, python scripts)
- plot_constraints() -> overview plot with boundary conditions and source terms
- Enhanced
__repr__()and__str__()for better object inspection - Storage support with proper XML handling
plot
- add option to plot legend outside of plots.
- added support for continuous contourplots via
continuous_cmap=True. - Allow user to set arrowsize parameter in contourf
Variable
- added aggregation methods
min,max,mean,median,sum,std,var.
Infrastructure
uv.lockadded for reproducible installsscripts/pull_containers.py— helper to pre-pull serial/parallel OGS containers- Temporary files now isolated under
tmp/ogstools/instead of the system temp root - Drop Python 3.10 support
- Add Python 3.14 support
- Updated pinned environment
- Test with container from 3.10 to 3.12
- Dependency and tooling update
- Use Intersphinx for 3rd party package documentation reference
- Monitor (Bokeh) is optional dependency
Documentation
New Examples
- plot_framework_short.py: Condensed workflow demonstrating the complete OGSTools
framework (Setup → Compose → Run → Analyze → Store) - plot_storage.py: Comprehensive guide to the storage system covering basic usage,
ID-based organization, overwriting with backup, archiving, and advanced topics
Updated Examples
- Updated simulation examples to use new
ModelandSimulationclasses - Modified examples to demonstrate the new storage system capabilities
- Added example data: small_deformation simulation with complete model, execution,
meshes, and results
Tests
- plotting tests now actually check whether the resulting figure is as expected
- Added comprehensive tests for new framework components:
test_framework.py: Tests for Model, Simulation, Result integrationtest_model.py: Model class functionalitytest_simulation.py: Simulation lifecycle and storagetest_storage.py: Storage system, backup, and archive functionality
Imports
- Top-level API now exports additionally:
Model,Simulation,SimulationController,Execution,Log
Maintainer TODOs
next sub release
next main release
Full Changelog: 0.7.1...0.8.0