6.4.0
See www.opengeosys.org/releases/6.4.0/ for binary downloads.
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 replacingboost::optional
. - !3517 Using
std::any
replacing theboost::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.
Tools and utilities
- !3534 Adjusted reviseMesh command line utility to handle all mesh properties instead of just MaterialIDs
New tools
- !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
toOGS_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.