OpenGeoSys 6.5.0

Released on Thursday, Nov 30, 2023, GitLab release


Note: When using Python bindings make sure to have Python installed on your system:

The release includes a new finite strain mechanics process, several run time performance optimizations, and new output options.

The LargeDeformation process for finite strain mechanical analysis was implemented. It is set up in a Total Lagrangian formulation. The process uses MFront/MGIS interface for the constitutive relations of the solid, which also takes care of the corresponding pull-back operations. The implementation will be the basis for simulations of large deformation processes, such as salt creep, crushed salt compaction, bentonite swelling or soil mechanics problems.

Optimizations include:

  • OpenMP assembly in TH2M/TRM/TRF, configurable OGS_ASM_THREADS=<n>.
    Note that this might introduce race conditions, so better double-check simulation results when you use this feature.
  • CT linear case optimization with speedups of around 10 for certain linear setups.
    Configurable via the <linear> and <linear_solver_compute_only_upon_timestep_change> prj file settings.
    Note: these are expert options; OGS won’t check if it’s valid to use them, this is the sole responsibility of the user.

Output for the users and developers was extended. Finer-grained control options for result output (subdomains, variables) were implemented on the user’s side. For developers possibility to output assembled local and global matrices is now available. It is configurable via the OGS_LOCAL_MAT_OUT_PREFIX="<some prefix>", OGS_LOCAL_MAT_OUT_ELEMENTS="0 1 5 16 123" and OGS_GLOBAL_MAT_OUT_PREFIX="some prefix>" environment variables. The local matrix output is available for all processes, and the global matrix output only for small deformation, TRF, TRM and TH2M at the moment. For better tests the vtkdiff was extended to compare integration point data. This new feature should be used in newly added CTests.

Other notable changes include, local coupling scheme for staggered processes, and thermo-mechanical part of a freezing liquid was implemented in ThermoHydroMechanics process; hydraulic part to come soon.

Breaking changes

This section lists changes in OGS that might make OGS terminate due to missing or unused configuration or might change OGS behaviour.

  • !4811 TRM/TRF vapour properties moved.
  • !4800 <media> used in two phase flow p-rho.
  • !4766 <dimension> configuration removed in HM, LIE/HM, LIE/M, RM, TH2M, THM, TRM.
  • !4699 x_dot renamed to x_prev in all assembly routines.
    For new processes developed in private branches this change might entail a silent change of meaning, i.e., the code still compiles, but produces nonsensical simulation results.
  • !4403 The small deformation process now computes eps_prev instead of storing it.

    The only problem appeared for the back-filling (subdomain deactivation) case where a different strain was stored. This is a not so simple issue to be dealt with in the future.

  • !4557 If some variables are specified for output, only those will be output, i.e., users might miss some outputs compared to before this MR. Please check/adapt your prj files if necessary.
  • !4618 Three sub-folders of MeshLib, MeshEditing, MeshGenerators and MeshQuality, and some other files, which are only for GUI and utilities, are moved out of MeshLib

New processes

  • !4821 Large deformations process.

Process’ changes



  • !4800 Use <media> in the two phase flow p-rho process reusing MPL implementations of constitutive relations.

Component transport process / reactive transport process with coupling of Phreeqc

  • !4713 and !4747 add an option <linear> that speeds up the simulation of linear problems.
  • !4730 adds an option <linear_solver_compute_only_upon_timestep_change> that speeds up simulations of linear problems further.


  • !4613 enables use of lower dimensional fracture elements in HT process.


  • !4766 <dimension> keyword removed. Script to adapt all project files found recursively:
  • !4578 Improvement of the fixed stress splitting approach in the staggered scheme

Richard’s mechanics process


  • !4403 Compute eps_prev instead of storing it.
  • !4643 Modified cam clay version with constant elasticity: clean-up, bug-fix and renaming (ModCamClay_semiExpl_constE.mfront).
  • !4604 Modified cam clay version with pressure-dependent elasticity (original MCC model) added (ModCamClay_semiExpl.mfront).
  • !4739 SmallDeformation uses media for solid density evaluation.
  • !4763 Extract constitutive relations into graph-like structure.
  • !4766 <dimension> keyword removed. Script to adapt all project files found recursively:


  • !4528 Extract constitutive relations update.
  • !4723 “Correct history variable update for freezing. Testing 9% volumetric strain expansion.
  • !4766 <dimension> keyword removed. Script to adapt all project files found recursively:


Constitutive relations (material models)

  • Solids, multi-material internal states variable output and restart:
  • !4794 Add deformation gradient, second Piola-Kirchoff stress tensor, and Green-Lagrange strain to MFront interface and the MPL.
  • !4794 MFront uses gradients from latest iteration for the new behaviour data state from now on.

Generic features

  • !4507 adds a simple way to access blocks of finite element degrees of freedom: auto const [x1, x2, x3] = NumLib::localDOF<N1, NumLib::Vectorial<N2, 2>, N3>(x);.
  • !4522 adds a generic algorithm computing numerical derivatives.
  • !4546 adds the possibility to output local and global matrices for debugging purposes.
  • !4556 provides an OpenMP parallelized assembly for the Newton-Raphson solution scheme for TRM, TH2M and TRF that can be enabled via the environment variable OGS_ASM_THREADS=<NUMBER_OF_THREADS>. Solving the TH2M process with the Picard non-linear solver is not possible, anymore.
  • !4798 Neumann-type boundary condition: If possible evaluate parameter in Gauss points.
  • !4668 Reset integration point data by materialIDs.


  • !4560 New tool createTetgenSmeshFromRasters
  • !4773 partmesh is now build with the official METIS.
  • !4598 Use numerical element volume calculation in AddElementQuality.

Data Explorer

  • !4580 Raster data can now be saved to files
  • !4580 Raster files loaded into the Data Explorer can now be converted into *.asc format (same as via the Raster2ASC command line interface)

Python & Jupyter

  • !4575 Migrated wheel build backend to scikit-build-core
  • !4547 Relax Python requirements a bit, update PyVista to 0.39.
  • !4620 Python interface to access OGS mesh. Following properties of a MeshLib::Mesh can be accessed by the OGSMesh python wrapper:
    • coordinates of the mesh nodes
    • cell information (vtk cell types and the node ordering are used)
    • properties assigned to MeshItemType::Node and MeshItemType::Cell can be read
    • properties assigned to cells can be read and set
    • properties assigned to nodes/points can be read and set
  • !4654 [wheel] Changes version scheme to guess-next-dev. Increments version number for development (master) wheels.
  • !4824 Fix most of the warnings issued by ruff in python code and notebooks.

Bug fixes

  • !4582 [MeL/IO] Increase time value output precision for xdmf.
  • !4666 Reset solution after rejected initial time step.
  • !4749 fixes a one time step lag of the output flow rates in ComponentTransport when used together with the <linear> optimization.
  • !4753 Suppress default output if fixed output time steps are given.
  • !4784 Simplifies the code and fixes a possible bug with dangling pointers in staggered coupled simulations
  • !4797 Frees some global matrices/vectors after use (bug introduced in !4749)
  • !4455 Fixed K_pT term of latent heat in TRM and TRF


  • !4525 [wheel,web] Use env var CMAKE_ARGS to override CMake preset for wheel.
  • !4538 Re-enable compilation on Eigen 3.4.0.
  • !4521 Removed option OGS_USE_PYTHON. OGS is now always built with Python (boundary conditions) support.
  • !4561 Better third-party license collection.
  • !4707 Refactored check header job.
  • !4750, !4473 Use bundled fmt from spdlog.
  • !4785 [cmake] Updated sanitizers logic. Changes CMake options OGS_ADDRESS_SANITIZER to ENABLE_ASAN and OGS_UNDEFINED_BEHAVIOR_SANITIZER to ENABLE_UBSAN.


  • !4542 [ci] Introduced MR label ci::unit_tests which runs unit tests only (skips ctests).
  • !4550, !4685, !4820 Introducing reproducible builds with GNU Guix.
  • !4592 [eve] Updated to toolchain 2022b.
  • !4722 [ci] Deployed guix container to eve, see docs.
  • !4727 Added CI label ci::web only (fast) which skips notebook execution.
  • !4704 Notebooks can be placed in web/content as well.
  • !4762 [ci,nb] Refactored notebook testrunner, notebooks now use regular TOML frontmatter.
  • !4769 [ci] Limit max notebook runtime in MR pipelines to 10 minutes.
  • !4776 [cmake] Refactored coverage: simplified CMake logic, removed bilke/cmake-modules-dependency.
  • !4781 [guix] Include or package dependencies. This will allow building specific commits, e.g.: guix build [...] --with-commit=ogs=[some commit hash] ogs.
  • !4789 [cmake] Refactored MKL find logic to use CONFIG mode.
  • !4796 [guix] Build enhancements channel repo. Also added MFront support in !4810.

File I/O

  • !4557 Breaks default behaviour Updating prj files may be necessary

    • Only the variables listed in the prj file output section are outputted


      A possibly existing property Y will not be written!

    • In case of empty variables section all available variables are outputted

    • OGS tools write all available properties to the result file

  • !4594 Output sub-mesh specified by material ids. Elements of the corresponding material IDs of the mesh will be extracted to a separate sub-mesh. The bulk-mesh properties are transferred to the sub-mesh. The file name of the sub-mesh in the example below will be bulkmesh_0_2_4.

            <mesh>bulkmesh</mesh> <!-- output entire bulk mesh -->
            <mesh material_ids="0,2,4">bulkmesh</mesh>  <!-- output only those parts with specified mat IDs -->

Material Property Library (MPL)

  • !4531 adds the water saturation temperature calculated according to the IAPWSIF97 in Region4.
  • !4543 adds the water liquid saturation density and enthalpy calculated from pressure based on the IAPWSIF97 in Region4.
  • !4562 adds the water temperature in IAPWSIF97 region1 calculated from pressure and enthalpy.
  • !4564 adds the water enthalpy in IAPWSIF97 region1 calculated from pressure and temperature.
  • !4524 adds the water vapour saturation density and enthalpy calculated from pressure based on the IAPWSIF97 in Region4.
  • !4636 initialization of internal state variables for solid models. New section in the project file:
<constitutive_relation> <initial_values> <state_variable name="InternalVariable" parameter="InitialValue"/> </initial_values> </constitutive_relation>
  • !4667 adds the cubic law permeability calculation method for fractures.
  • !4648 $\phi (1-S_L)$ is removed from vapour diffusion models, VapourDiffusionFEBEX and VapourDiffusionPMQ.


  • !4387 Generalized numerical stabilizer and consequently applied full upwind stabilizer to HC.


Version info

  • !4537 Boost 1.73.0
  • !4561 nlohmann/json 1.10.5
  • !4418 googletest 1.13.0
  • !4706 spdlog 1.12.0
  • !4801 Tested hdf5 version is 1.14.3 when built via ogs (minimum still at 1.10.7).