Skip to content

0.4.0

Latest
Compare
Choose a tag to compare
@bilke bilke released this 06 Sep 14:04
· 40 commits to main since this release

OGSTools 0.4.0 Release Notes

Overview

Supports Python: 3.10, 3.11, 3.12.

First release after integration of ogs6py. The state of ogs6py corresponds to the functionality of v.403 of ogs6py (only light API changes, see Features/Project file)

OGS

OpenGeoSys version: 6.5.3

Migration strategy from ogs6py to ogstools

The recommended strategy is:

  • Back up your environment with pip freeze > yourfile.txt
  • Upgrade ogs6py to 0.403 first and resolve issues (see breaking changes).
  • Uninstall ogs6py and install ogstools
  • Remove import ogs6py. Add import ogstools as ogs. The former OGS becomes Project and function parameters of OGS.__init__() are now with lower case names. See example in Features

API changes

plot

  • renamed meshplotlib to plot
  • renamed plot function to contourf
  • renamed setup.p_min -> setup.vmin, setup.p_max -> setup.vmax
  • added several setup options available as kwargs

variables

  • renamed propertylib to variables (to align with OpenGeoSys vocabulary)
  • presets are now directly accessible as variables
  • renamed presets to properties
  • renamed Property class to Variable

meshlib

  • renamed aggregate function to time_aggregate
  • renamed MeshSeries.read to MeshSeries.mesh

Features

ogs6py

  • new version with significant parts of the codebase rewritten. Changes visible to the user:

example

before:

import ogstools as ogs

prj = ogs.Project(input_file="mechanics.prj", output_file="old_parameter_add.prj")
prj.add_block(
    blocktag="parameter",
    parent_xpath="./parameters",
    taglist=["name", "type", "value"],
    textlist=["density", "Constant", "1900"],
)
prj.write_input()

now:

import ogstools as ogs

prj = ogs.Project(input_file="mechanics.prj", output_file="new_parameter_add.prj")
prj.parameters.add_parameter(name="density", type="Constant", value="1900")
prj.write_input()
  • support for combining replacement- and build-method commands
  • breaking changes: some methods renamed closer to project file tags:
  • add_process_variable() split-up into add_secondary_variable() and add_process_variable()
  • geo.add_geom() -> geometry.add_geometry(), timeloop -> time_loop etc.
  • support for more MPL properties
  • several bugfixes and tiny new features
  • integration into ogstools

plot

  • Time slice plots can be created easily: filled contour plots of transient data along a sampling line (example)

time_slice

  • Variables now have default symbols (e.g. used for labels in plots)

Mesh and MeshSeries

  • Mesh can be created from a shapefile
mesh = ogs.Mesh.read(test_shapefile)
import ogstools as ogs

ms = ogs.MeshSeries("filepath/filename_pvd_or_xdmf")
ms.data("darcy_velocity")[-2:, 1:4, :]  # shape is(2, 3, 2)
result_mesh = ms[-1]
for mesh in ms:
    print(mesh)
  • Added function argument to Meshseries.animate functions has more flexible parameter that allow
    1. transformation of the mesh and
    2. customization of the plot
  • Meshseries has domain_aggregate function (e.g. min/max of a variable per time step)

Project files

Documentation, examples and more

  • Documentation got new structure of examples (now all organized under ogstools/examples/)
  • pip requirements.txt files (of tested environment) are added for stable test environment reproduction (To be used by developers. Do not use it in your projects!)

Bugfixes

  • Several small fixes in plotting functions (visual)
  • MeshSeries closes file handle to h5 file after reading is finished
  • Dependency compatibility (e.g., remove restriction to matplotlib and relaxing requirements)