The current release forms the basis for the upcoming TH2M process and further extension of the newly implemented non-isothermal Richards mechanics.
The highlights of this release are collected in the overview with details below.
Overview
The reactive transport process and its Phreeqc interface were enhanced: extended the porosity interface and provide two ways of calculating solid/liquid ratio.
Many new material models were implemented including the Clausius-Clapeyron vapor pressure, the Somerton’s thermal conductivity, the FEBEX and PMQ type vapour diffusion, a water vapour density property, and a linear latent heat of water property.
A new process – the non-isothermal Richards mechanics – was implemented and extends our ability for complex thermo-hydro-mechanical interaction simulations further.
The simpler Richards mechanics process was enhanced by a double structure porosity model, which has been used for simulations with Bentonite. And finally, modelling of the excavations got a fine-grained time control over the excavation progress.
The development and continuous integration environment was enhanced with automated spell-checking of code and documentation and a collection of code coverage metrics for the merge requests. Code has be become more consistent in formatting by using the clang-format and cmake-format tools. Most of the third-party libraries, which are required for certain OGS configurations, are now managed by a more integrated approach using CPM – the CMake Package Manager – instead of git submodules and Conan packages. We may phase out Conan for package management in the future but at the moment there are still Conan packages in use, most notably Qt and PETSc.
We implemented a release branch with bug fixes workflow, see #3093
and the Discourse announcement
.
Features
- !3549
Adapted license wording to fully conform to BSD 3-clause license.
New processes
- !3166
Non-isothermal Richards mechanics (monolithic scheme).
Process’ changes
Component transport process / reactive transport process with coupling of Phreeqc
- !3326
Hide chemical solver interface inside the ComponentTransportProcess.
- !3358
Utilize MPL for the setup of chemical system.
- !3362
Update porosity accessing interface in support of incremental model type in ComponentTransportProcess.
- !3467
Replaced molecular diffusion with pore diffusion in ComponentTransportProcess.
- !3364
Rename reactant amount as molality.
- !3372
!3490
!3507
Set solid/liquid ratio according to solid volume fraction, porosity and fluid density.
Common process’ changes
- !3325
Include swelling stress into total strain. Fixing effective stress usage.
- !3355
Improve generic interface for setting initial conditions.
- !3538
Time dependent excavation. Extending time intervals to time curves.
Hydro mechanical processes
- !3405
!3441
Add double structure model to RichardsMechanics process using micro-saturation model and compatible with swelling.
- !3429
Use MPL in ThermoMechanics.
- !3459
Changed the strain and stress output in HydroMechanics.
- !3477
!3503
Fix a bug in RichardsMechanics where the initial stress was ignored when using central differences Jacobian.
- !3498
Permeability, porosity, storage, and transport porosity are now medium properties in RichardsMechanics.
- !3114
Permeability, storage, Biot coefficient, and porosity are now medium properties in ThermoHydroMechanics, HydroMechanics and RichardsFlow.
Boundary condition
- !3531
Separate time dependent Dirichlet boundary conditions and subdomain deactivation boundary conditions.
Numerics
- !3422
Improving numerical stability in RM and TRM by using secant derivative of dS_L_dp_cap in local assembler.
- !3431
Local Newton-Raphson methods supports increment tolerance additionally to the residuum tolerance now. Previously used
error_tolerance tag is deprecated.
- !3468
Update PETSc SNES solver and add interface for constraint variables.
Parameter
- !3342
New parameter type “RandomFieldMeshElementParameter”.
Time stepping
- !3411
Fixed a bug in IterationNumberBasedTimeStepping.
- !3416
Fixed a bug that skips output after a rejected time step followed by successful time step.
Material models
- !3316
A vapour pressure model ‘Clausius-Clapeyron’.
- !3356
‘Modified Cam clay’ model for cohesion-less soil materials.
- !3423
Split the relative permeability property by phase.
- !3439
Gas pressure permeability model.
- !3449
Added a function of formKelvinVectorFromThermalExpansivity.
- !3450
Somerton’s thermal conductivity model for soil.
- !3498
PermeabilityOrthotropicPowerLaw, PorosityFromMassBalance and TransportPorosityFromMassBalance are now defined on the medium level.
- !3491
Added vapour diffusion type and the FEBEX type vapour diffusion property.
- !3527
A vapour diffusion property of VapourDiffusionPMQ .
- !3489
A water vapour density property.
- !3519
A linear latent heat of water property.
- !3542
Add a notion of fluid phase to MPL allowing HM process to use Gas or AqueousLiquid for fluid phase.
Bug fixes
- !3361
!3400
CMake fixes when using the MKL library.
- !3397
Skip secondary variables evaluation if the nonlinear-solver failed, e.g. for MFront material model.
File I/O
- !3383
Add iteration number output option to file names.
- !3307
New HDF5 writer based on collective MPI IO
- !3371
Node partitioned mesh reader handles all available element types.
- !3532
Remove unused XmlNumInterface.
- !3533
Sort and cleanup XML interfaces.
Code base changes
- !3502
Using
std::optional through all of the code base replacing boost::optional.
- !3517
Using
std::any replacing the boost::any.
Replacing the old implementations on small vectors and matrices with Eigen equivalents:
- !3354
Change signatures of compute{2,3}DRotationMatrixToX
- !3319
!3320
!3346
[GeoLib] Substitute Vector3 by Eigen
- !3345
[GL] Change interface of computeRotationMatrixToXY.
- !3359
Final removal of MaL::DenseMatrix and MaL::Vector3
- !3512
Replace scalarProduct() with Eigen::VectorXX::dot().
Testing and documentation
- !3377
Added gmldiff tool.
- !3351
xdmfdiff enabled for testing
- !3446
Removed Parsl test. We will focus on Snakemake for workflow management instead.
- !3448
Revived code coverage.
- !3486
Doxygen will now generate full docs (suitable for all configurations).
- !3505
[web] Updated development workflow and Conan usage.
- !3552
Full-text search for Doxygen.
- !3534
Adjusted reviseMesh command line utility to handle all mesh properties instead of just MaterialIDs
- !3433
Creating a 3D voxel grid out of a list of 2D mesh layers
- !3433
Marking all elements in a 3D voxel grid intersected by a 2D mesh (e.g. a fault)
Updates
- !3482
GMSH2OGS can now extract boundary/subdomain meshes consisting of line elements.
CI & Infrastructure
- !3343
Enable C++20 support.
- !3381
Serial container is build with Python support.
- !3385
Container have virtualenv installed to create custom Python environments.
- !3401
Website provides binaries for release branch with bug fixes.
- !3448
Code coverage reports for merge requests.
- !3472
Automatic spell checker (codespell
) as pre-commit check.
- !3508
Serial container includes MFront support.
- !3539
Fixed Doxygen warnings output.
CMake
- !3428
Introduction of CMake presets
for common build configurations
.
- !3435
Removed option
OGS_USE_EIGEN. Eigen is used through all of the code for long time already.
- !3437
Replaced git submodules with CPM
. See docs
.
- !3466
Reverted back to out-of-source builds in presets.
- !3494
More Conan packages moved to CPM. Renamed CMake option
BUILD_TESTING to OGS_BUILD_TESTING.
- !3496
Preparation of code formatting with clang-format and cmake-format.
- !3504
Replaced Conan VTK module with CPM.
- !3505
Enabled build configuration with sources from tar/zip archive (previously full git repo was required).
- !3509
Added cmake-lint
as a pre-commit check.
- !3518
Added cmake-format
as a pre-commit check and formatted all CMake files except of Third-party and
Tests.cmake.
- !3535
Simplified ccache setup, added third-party license info into installed ogs packages, simplified MSVC folder setup.
Version info