## Overview

This release features the implementation of the Thermo-Hydro-Hydro-Mechanical (`TH2M`

) fully coupled process. The process is intended for modeling two-component two-phase flow in deformable porous media under non-isothermal conditions. Testing is in progress and development continues, so handle with care or wait a little longer until it got more refined.

Another new process, the StokesFlow process, is mainly used for simulating the low-Reynolds-number incompressible flow in fractures. The Stokes equations are solved using the standard Taylor-Hood scheme. Additionally including the Darcy term in the momentum balance equations, the `StokesFlow`

process module is capable of modeling the fluid flow in fractured porous media.

The local assembly on inclined elements, which can be used to simulate the fluid low in fracture, are implemented. As a first application, LiquidFlow is enabled to use such local assembly.

Also work continued on new material models, e.g. the Günther Salzer model for transient and stationary rock salt creep, an improved HDF5-based output file handling which allows for parallel postprocessing as well as the introduction of a first iteration of a Jupyter Notebook based user workflow. Stay tuned for more on interactive computing in future releases.

## New processes

### TH2M

A thermal two-phase flow in deformable solid media process.

- !3588 Added an infrastructure for the TH2M Process that handles different models of phase transitions.
- !3550 Monolithic scheme implementation using central differences Jacobian.
- !3656 Collect all constitutive variables updates in single function.
- !3684 HM flow-fully-saturated tests; liquid and gas formulations.
- !3759 Restart; integration point data I/O.
- !3763 Extract constitutive variables.
- !3762 Excavation. Enable domain deactivation.
- !3777 Switch to constant solid volume fraction
- !3767 Implement partial analytical Jacobian, working for saturated media.
- !3802 Gas and liquid phase density output directly from ip_data array.

### Stokes flow

- !3617 Monolithic scheme implementation.
- !3658 Documentation
- !3668 Extended to Stokes-Brinkman variant.

## Process’ changes

- !3583 THM and TRM process need a thermal conductivity property on the medium level
- !3561 Excavation support for coupled mechanics processes and Dirichlet boundary conditions on the excavated surfaces were added.
- !3580 [THM] Replaced total thermal strain with incremental thermal strain
- !3742 [THM] Adding integration point output for stress and strain and a restart test. !3706 Separate createLocalAssemblers respectively for BC/Source term and system of equations.

### PhaseField

- !3749 added constrained minimisation to the phase-field solution scheme.
- !3779 added AT1 regularisation of the total energy (see (https://link.springer.com/content/pdf/10.1007/s13137-019-0126-6.pdf) for details).

### ThermoRichardsFlow

- !3419 added ThermoRichardsFlow process with optional corrections for solid elasticity under simplified assumptions (see Improved predictions of thermal fluid pressurization in hydro-thermal models based on consistent incorporation of thermo-mechanical effects in anisotropic porous media for details)

### Component transport process / reactive transport process with coupling of Phreeqc

- !3695 Enabled to input the amount of ion exchangers in subdomains via the MaterialPropertyLib
- !3648 Added capability to model ion exchange reactions.
- !3563 Added optional functionality for chemically induced porosity change.
- !3567 Added optional functionality for irreversible equilibrium reactions to the ChemistryLib.
- !3721 Provided a simple means of considering temperature effect on the diffusive transport process.
- !3744 Allowed chemical calculations by means of the look-up table approach.
- !3781 Solved the reaction equation in the reaction stage instead of doing extrapolation from integration points onto mesh nodes.
- !3810 Incorporate the effect of change of storage capacity.

### HeatTransportBHE

- !3793 Add server communication feature after each time step

### HydroMechanics

- !3607 Simulation on a vertical slice of a 3D domain.

### LIE

- !3672 Use the existing class to compute the rotation matrix in LIE, which also corrects the orientation of the displacement jump.
- !3676 Corrected the velocity and its orientation in the fracture.
- !3834 Corrected matrix sizes in velocity computation.

### LiquidFlow process

- !3610 Use specific body force instead of darcy_gravity. Users LiquidFlow project files has to be adapted!
- !3623 Use body force vector in the local assembler.
- !3632 Add local assembly in inclined elements for simulating flow in fracture.

### Richard’s component transport process

### Richard’s mechanics process

- !3574 Extend integration point data output to solid material state internal variables used by
*e.g.*MFront. This makes correct restart possible. - !3690 Local Newton-Raphson: add optional scaling for convergence tests, which is used in the computation of micro-porosity.

### SmallDeformation

- !3683 Use the element wise reference temperature.

### ThermoMechanics

- 3738 Fixed integration point (IP) data IO for restart computation.

### ThermoRichardsMechanics and ThermoHydroMechanics

- !3583 THM and TRM process need a thermal conductivity property on the medium level
- !3758 THM/TRM; Add heat flux output. Corrected HydraulicFlow.
- !3611 TRM; Include the thermal strain into total mechanical strain.
- !3714 Replaced the hard coded solid density model in THM with the MPL property. With changes, the input parameter of
`reference_temperature`

is removed. - !3718 Enabled integration point data I/O in THM

## Material models

- !3572 IdealGasLaw now uses molar mass from VariableArray rather than from another MPL-Property.
- !3579 New saturation-capillary pressure relation, SaturationExponential, mainly for testing and prototyping purposes.
- !3546 Implementing medium level property to mix thermal conductivities from phases.
- !3599 Added orthotropic embedded fracture permeability model
- !3640 A Function type MPL property using exprtk, similar to the Function type parameter. All scalar variables from VariableArray can be used.
- !3721 Added temperature dependent model for molecular diffusion.
- !3745 New stationary creep model for rock salt.
- !3747 The damage-free version of the Günther Salzer model for transient and stationary rock salt creep.

## Numerics

- !3676 Dropped the rotation of the shape function gradients. These changes also correct the velocity and its orientation in the fracture.

## Data Explorer

- !3578 Elevation of station data can be mapped based on meshes or rasters

## Testing

- !3586 Modular project files by patching a base project file with multiple patch files with syntax for adding, removing and modifying parts of the base. The selection is done via XPath expressions.
- !3664 First implementation of a code coverage visualization.

## Bug fixes

- !3615 Bug fixing in EffectiveThermalConductivityPorosityMixing: Avoided the porosity calculation
- !3566 Fixed a bug in NodalSourceTerm when the Taylor-Hood elements are used.
- !3682 Fixed the output of phase compositions in TH2M process
- !3585 Use correct saturatation for swelling stress update in output of the RichardsMechanics process.
- !3652 Fixed a MFront related bug in HydroMechanics.
- !3756 Speedup Dirichlet BCs for deactivated subdomains avoiding costly reallocations.
- !3788 Use local topology information while removing global numbering dependencies in Mesh. Resolves base node id larger then higher order node id warning.
- !3797 Refactored material ID list parser, prevents some (unlikely) bugs with malformed prj files.
- !3816 Fix Brooks-Corey saturation derivative.
- !3834 Fixed an Eigen matrix size related bug in LIE, which sporadically causes LIE benchmark failed on Mac OS.

## CMake

- !3592 Added build and test presets.
- !3624 Job pools for Ninja: optimizes build parallelization (full cores for everything but processes, processes depend on available memory)
- !3671 Integrate tfel with
`ExternalProject_Add()`

instead of Conan. - !3687 Qt is not handled by Conan anymore! Use aqt to install it on your system.
- !3698 Moved LIS dependency from Conan to ExternalProject.
- !3727 Added support for ccache on Windows, dropped clcache.
- !3707 CMake test presets, requires CMake 3.21.

## Infrastructure

- !3555 and !3835 Clang-format all of the code base. Thriving for consistency.
- !3562 Added threshold for Doxygen warnings (16).
- !3570 Enabled compiler warnings for executables.
- !3622 Correct naming of private data members using trailing underscore.
- 3671 Enabled mfront on CI mac job.
- !3712 Added library dependency reports to Doxygen documentation. Added Lizard code complexity report to Doxygen CI job as a build artifact.
- !3720 Added clang-format check in pre-commit.
- !3751 OGS binaries are now in the
`PATH`

in the container environment. Execution via`--app ogs`

is not required anymore. - !3755, !3757 Initial Apple ARM (M1) support.
- !3761 CI now runs with Pipelines for merged results. Also switched to
`git clang-format`

instead of`clang-format`

. - !3776 Added predefined container with Jupyter Notebook, ogs and Python tools.

## File I/O

- !3598 Time is additional dimension HDF5 output data - allows slicing with h5py
- !3604 HDF5 can now contain multiple meshes (boundary conditions) and an attribute “times” with time step values for each step
- !3764 HDF5 can now be written to multiple files. The number of files can be adapted to allow different I/O-patterns (1-file-per-process, single-file, 1-file-per-node).

## Version info

- !3647 MFront based on TFEL branch rliv-3.4
- !3757 Conan 1.34.0 (optional)
- !3707 CMake presets require CMake 3.21.