Releases: ufz/ogs
6.5.3
Breaking changes
- !5063 changes the handling of mesh file paths in the
prj
file: If such a path is a relative path with a directory separator (/
or\
), this path will be resolved relative to the mesh directory (-m
flag) or theprj
file if the former is not passed. Before, such relative paths were resolved relative to the process's working directory. MR !5063 resolved that inconsistency. - !5030 Change time incrementing algorithm to use Kahan summation. This hopefully avoids any 1e-16 time steps near fixed output and end times.
New processes
- !4481 adds the two-phase well-bore process.
Process' changes
- !5050 Removed K and M matrices from
assembleWithJacobian*
interface as these are not needed. - !5054 Generalize openMP parallel assembly (Newton scheme) to staggered processes.
HeatTransportBHE
- !5025 [BHE] Add Algebraic BC in the assemble of the HeatTransportBHE Process.
HydroMechanics
- !5054 Use openMP parallel assembly for monolithic and staggered schemes.
LIE
- !5078 Fix a memory leakage bug in LIE#HM when matrix is disabled for the flow process.
- !5081 B bar method for HM#LIE.
- !5084 B bar method for M#LIE.
Generic features
- !5088 Consistent high-precision output using max_digits10 especially for time and time increments.
Tools
- !5049 Generalised xyz interface to read any xyz raster file (was just complete rectangle images previously)
Data Explorer
- !5049 Generalised xyz interface to read any xyz raster file (was just complete rectangle images previously)
Python & Jupyter
- !5058 Refactored python bindings build structure and migrated Snakemake tests into pytests. Removed Snakemake dependency.
Testing
- !4757 Reenabling TH2M process in the CI for Windows. Still takes long time to compile.
Infrastructure
6.5.2
Breaking changes
-
!4919 Removes the
molar_flux
secondary variable in favour of flux output for all chemical species. -
!4971 THM and RM processes use current state for
$C_{\text elastic}$ computation and no longer the "null"-state. -
!4984 renames the cell averaged stress output from
stress_avg
tosigma_avg
to be consistent withsigma
andsigma_ip
outputs.
Process' changes
- !4982 Correct domain deactivation behaviour for multi-variable processes; Assembly is not run iff the element is deactivated for all variables.
- !4984 introduces generic cell averaged output for all processes using reflections for IP data I/O (ATM these are TRM, LD, SD, TH2M). This enables cell average output of all IP data (except material models' internal state data) for these processes.
TH2M
- !4980 finalizes at large the extraction of the constitutive relations into individual models, similar to how it is done in ThermoRichardsMechanics.
Component transport process / reactive transport process with coupling of Phreeqc
- !4919 Adds flux output
<c>Flux
for all chemical species<c>
.
SmallDeformation
Generic features
- !5009 Enables using Python and volumetric source terms as nodal source terms.
Testing
- !5003 [ci] Fixes for win jupyter ctests
Bug fixes
- !4919 Fixes the flux output computation in the ComponentTransport process. (The FEM assembly was/is correct.)
CMake
- !4978 New CMake-preset
sanitizer
. - !4990 Refactored Eigen / MKL / OpenMP setup: Introduced new CMake option
OGS_EIGEN_PARALLEL_BACKEND
which isOpenMP
by default. When usingOGS_USE_MKL=ON
then the backend isMKL
. Also updated Eigen to a recent master.
Infrastructure
- !4973 Removed ogs-container-maker dependency. OGS user container are now generated with GNU Guix. Due to improvements in dependency management (CPM) third-party developer container (e.g. C++ VSCode Devcontainer) are sufficient to use for OGS development.
- !4974 Removed ThirdParty-folder.
- !5011 Provide MKL container on https://www.opengeosys.org/releases/.
File I/O
- !4989, !4996
ogs
andpartmesh
create output directory when invoked with-o
-parameter. - !4997
ogs -m
-switch: fallback to reading gml from.prj
-file directory.
Material Property Library (MPL)
- !4992 Allow access of
deformation_gradient
,mechanical_strain
,stress
,total_strain
, andtotal_stress
in the exprtk expressions of the MPL Function property.
Documentation
Version info
- !4974 VTK 9.3.0
- !5014, !4992, https://gitlab.opengeosys.org/ogs/ogs/-/commit/5390a73f2475c3b55ae5eed95f5379790196cf15
gcc 11.4gcc 11.3
6.5.1
This release introduces a suite of enhancements and new features across various processes within OpenGeoSys.
Notably, the introduction of FCT numerical stabilization and optimization of the assembly process for HeatConduction, memory optimizations in LiquidFlow processes, and Newton implementation in the HeatTransportBHE implementation represent significant steps forward in improving the efficiency, stability, and flexibility of simulations.
Additionally, the ability to input total stress as initial conditions in HydroMechanics and ThermoRichardsMechanics offer users greater control of their models.
For the LIE mechanics and hydro-mechanics processes the strain and stress are now output as vectorial quantities, which should simplify post-processing.
For the future we also aim for more frequent releases (around every 3 months) and with this we discontinue the bugfix branches.
Process' changes
Component transport process / reactive transport process with coupling of Phreeqc
- !4825 adds new numerical stabilization type "FCT" and apply it to the ComponentTransport process.
- !4873 adds heat transport equation to enable non-isothermal component (HTC) process only in staggered way.
HeatConduction
- !4867 adds the options
<linear>
and<linear_solver_compute_only_upon_timestep_change>
that accelerate the assembly to the T process. These options are already present for the ComponentTransport process.
HeatTransportBHE
- !4956 add the Newton nonlinear iteration feature to HeatTransportBHE process.
HydroMechanics
- !4915 Enables to input total stress as the initial stress.
LargeDeformation
- !4861 Add volume ratio to output
LIE
- !4851 For HM process, improved output such as added output for nodal values of the secondary variables, and vectorized the output of the element-wise averaged multi-component secondary variables.
- !4904 For M process, vectorized the output of the multi-component secondary variables.
LiquidFlow process
- !4962 Use shape matrix cache in LiquidFlow process to reduce memory consumption of local assemblers
ThermoHydroMechanics
- !4929 Enables to input total stress as the initial stress.
ThermoRichardsMechanics
- !4908 Enables proper restart with material models such as
PorosityFromMassBalance
via the new setting<initialize_porosity_from_medium_property>
. - !4923 Enables to input total stress as the initial stress.
- !4942 Changes the flavour of TRM that uses the extended OGS-MFront interface such that this flavour uses the full stiffness matrix to compute solid compressibility instead of only the elastic tangent stiffness.
Constitutive relations (material models)
- !4887 Linear elastic transverse isotropy model. Besides, this MR adds unit tests for LinearElasticOrthotropic too.
Parameters
- !4882 Local coordinate system containing implicit bases.
Numerics
- !4795 Class StaggeredCoupling.
Generic features
- !4891 adds the possibility to read/write matrix-valued IP data (and extrapolated data thereof) for processes doing I/O via reflections (currently most notably TRM)
Python & Jupyter
- !4866 All
ruff
issues fixed or silenced.
Testing
- !4889 [cmake] Improvements to ctest (regex output checks with e.g.
PASS_REGULAR_EXPRESSION
).
Bug fixes
- !4863 [cmake] Fix MKL dependency installation. Fixes Windows binary downloads.
CMake
- !4814 Refactor netCDF library finding and removed everything Conan-related.
- !4839 Simplify PETSc finding.
pkg-config
is now required for finding PETSc via CMake.
Infrastructure
- !4858 [ci] Build container with netcdf (ogscm only, not in Guix container yet).
- !4864 [ci] Docker Upgrade Ubuntu base image to 23.04 and gcc to 12.
- !4898 Builds on cdash.opengeosys.org can be traced back to their GitLab CI job by an additional notes file which is added to the cdash build.
- !4945 [ci] Remove linux docker jobs: test coverage is already in the other jobs and moved docker jobs to native linux jobs.
- !4961 Added some helper scripts for release automation.
File I/O
- !4872 Enable long paths in executables on Windows.
Material Property Library (MPL)
- !4808 OGS distinguishes now between
liquid_phase_pressure
andgas_phase_pressure
. This is required to for certain MPL properties such that they can be used across different processes. HM, as a single-phase process, sets both pressures equal to allow for gas and liquid phase properties.
Version info
6.5.0
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 tox_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.
New processes
- !4821 Large deformations process.
Process' changes
ThermoRichardsFlow
- !4811 additional gas phase added in the project file for vapour properties. This also includes property name changes. Compatibility script: move_vapour_properties_to_gas_phase.py
ThermalTwoPhaseFlowPrho
- !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.
HT
- !4613 enables use of lower dimensional fracture elements in HT process.
HydroMechanics
- !4766
<dimension>
keyword removed. Script to adapt all project files found recursively: remove_dimension_keyword.py - !4578 Improvement of the fixed stress splitting approach in the staggered scheme
Richard's mechanics process
- !4766
<dimension>
keyword removed. Script to adapt all project files found recursively: remove_dimension_keyword.py
SmallDeformation
- !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: remove_dimension_keyword.py
ThermoHydroMechanics
- !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: remove_dimension_keyword.py
ThermoRichardsMechanics
- !4811 additional gas phase added in the project file for vapour properties. This also includes property name changes. Compatibility script: move_vapour_properties_to_gas_phase.py
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](https://gitlab.opengeosys.org/ogs/ogs/-/merge_reques...
6.4.4
Highlights
Some notable additions in this release include the
output of residuum vectors on submeshes (now for the TRM and TH2M processes only),
restart for parallel simulations were made possible as well as CI coverage for the PETSc configuration was increased and the
infrastructure for Jupyter notebooks was extended.
There were also some substantial efforts to enhance the documentation especially for the project file, specific process configurations and tools.
Further CI improvements include the possibility to select subsets of test jobs via merge request labels to shorten feedback cycles and we added performance tracing of benchmarks via our CDash-platform.
Process' changes
LiquidFlow
-
!4203 Make process per default non-linear. One can enforce linear treatment in project file as follows:
<process> <!-- usual process specification --> <linear>true</linear> </process>
TH2M
- !4362 Added a Jupyter notebook version of the Bourgeat test case
- !4392 Function-type parameters can be used for MPL property and constituitive relation parameters. Fixes the "coordinates not set for spatial position"-error.
- !4485 Enabled output of extrapolated node wise intrinsic permeability.
PhaseField
- !4299 Added a variational phase-field hydraulic fracture model in toughness dominated regime (K-regime).
Component transport process / reactive transport process with coupling of Phreeqc
- !4451 Added flow rates output for all components.
- !4228 Use inclined elements in ComponentTransport.
ThermoHydroMechanics
- !4386 Implemented freezing terms for the energy equation.
ThermoRichardsMechanics and ThermoHydroMechanics
- !4363 Added a constitutive setting to the TRM process to make it possible to use either the existing mechanical material models or mechanical material models that use the new extended OGS-MFront interface.
- !4410 Kelvin Vectors can now be formed from matrices, allowing the use of arbitrarily rotated anisotropic thermal expansivities if read in as a parameter property.
Constitutive relations (material models)
- !4296 Extended the OGS-MFront interface beyond passing only stresses, strains and temperatures.
- !4304 All saturation dependent thermal conductivity models have been merged into one (
SaturationWeightedThermalConductivity
) and can be accessed by specifying the mean type:arithmetic_linear
,arithmetic_squareroot
and geometric. - !4378 IAPWS density and viscosity as well as Vogels viscosity model were added to MPL.
- !4391 Upgraded TFEL / MGIS to 4.0 branch.
Generic features
- !4393 Added support to assemble and output residuum vectors on submeshes for the TRM and TH2M processes.
Tools
- !4327 Added a tool writing integration point data from OGS output meshes to a new point cloud mesh whose nodes are the integration points of the input mesh.
- !4360 Fixed issue where elevation information wasn't added for [OUTFALLS]- and [STORAGE]-entities.
- !4452 Added a tool for converting any ascii raster formats OGS can read into *.asc-format.
- !4264 Added integration point data partitioning in partmesh.
- !4294 Added a new tool to convert pvtu-files to vtu-files: pvtu2vtu.
- !4352 Added partitioning and reading of non-IP field data.
- !4492 Extended
checkMesh
- andeditMaterialID
-tools to optionally output all existing MaterialIDs for a mesh (previously it was just displaying the range). - !4513 [partmesh] Renumbered the bulk node IDs of the bulk mesh.
Data Explorer
- !4430 Reader for XYZ raster files added.
Python & Jupyter
- !4285 Adds a simple wrapper around OGS CLI tools such that they can be easily used from Python. Available in the OGS wheels/via pip.
- !4300 Enables Python BCs and STs in the OGS Python wheels.
- !4502, !4512 Added support for markdown-based notebooks via jupytext.
Testing
- !4408 Refactored PyVista in notebooks testing logic: no more special treatment for headless systems. User is responsible for providing a window environment, e.g. via
xvfb-run
, which is shortly documented. Added documentation on how to shorten pipeline run times by modifying the corresponding files. Added pipeline variableCTEST_INCLUDE_REGEX
which corresponds to the-R
ctest argument. - !4421 [ci] New job include-what-you-use.
- !4437 Enabled large tests on PETSc configs in CI. Also added a CI variable
CTEST_ARGS
for temporarily selecting benchmarks in CI.
Bug fixes
- !4281 Fixed IP data access to Kelvin vector valued data. The error was introduced in !4222.
- !4302 Reimplement Robin-BCs which were incorrect for 2D and 3D setups.
- !4369 Fixed the restart feature of the TRM process, which was broken since !4316.
- !4397 Fixed PhaseField's BC for parallel simulations.
- !4453 Corrected initial residuum computations when start time is negative.
CMake
- !4306 Enabled MSVCs Multi-ToolTask scheduler for build parallelism and better multi-platform ccache setup.
- !4408 Test properties can now directly be set. Simplifies CMake logic a bit and is potentially more powerful.
- !4417 Don't include GKlibSystem.cmake (it defined
NDEBUG
on Debug configs!) from METIS and fixed some compile errors in asserts. - !4423 Moved VTK from CPM to external dependencies.
- !4473 fmt-library is now used as a regular library. Before it was used as a spdlog-bundled library.
- !4494, [!4497](https://gitlab.opengeosys...
6.4.3
See www.opengeosys.org/releases/6.4.3/ for binary downloads.
Highlights
-
We are happy to announce that the TH2M-process is now feature complete and has evaporation and dissolution implemented.
The TH2M process describes a two-phase, two-component approach, which is fully coupled with thermodynamic and geomechanical processes. Due to the complex process couplings, many different processes (e.g. in repository systems) can be investigated numerically, including media dry-out and resaturation, consolidation, stress- or deformation-dependent permeabilities, thermal expansion and heat-induced stresses, gas transport processes in fully or partially saturated media and others.
The two-component approach also enables the description of phase transition processes (evaporation, solution) under an equilibrium condition. The TH2M model is verified and validated on a benchmark suite which provides a hierarchical classification of different coupling combinations of the individual processes.
-
Stabilization is the numerical approach to eliminate the spatial oscillations produced by the Galerkin finite element method for the advection diffusion transport equation. There are two stabilization schemes, isotropic diffusion and full upwinding, are available now in HT and ThermoHydroMechanics.
-
Python bindings were extended in two ways: OGS got python wheels and can be now installed with pip, and has got a basic python interface to run a simulation from within python.
-
For developers the biggest improvement is the inclusion of the Eric Niebler's ranges library. Already used in few places in OGS it greatly improves code readability through easier composition.
Process' changes
- !4087 Adding forward differences numerical Jacobian computation. It is less expensive then central differences, but not necessarily slower overall, and sometimes even faster.
- !4161 Refactoring of domain deactivation.
- !4204 Removes the IntegrationMethod template parameter from local assemblers that use Taylor-Hood elements.
- !4217 Removes the IntegrationMethod template parameter from the remaining local assemblers (processes, STs, BCs).
- !4233 Parameter type Function can be used for MPL property and constituitive relation parameters in THM, TRM and TR.
- !4210 [PL/TH2M] Add/correct residuum output.
- !4247 MPL: Reimplement VariableArray as own class. Less memory and a little faster. Easier usage.
TH2M
The TH2M process describes a two-phase, two-component approach, which is fully coupled with thermodynamic and geomechanical processes. Due to the complex process couplings, many different processes (e.g. in repository systems) can be investigated numerically, including media dry-out and resaturation, consolidation, stress- or deformation-dependent permeabilities, thermal expansion and heat-induced stresses, gas transport processes in fully or partially saturated media and others. The two-component approach also enables the description of phase transition processes (evaporation, solution) under an equilibrium condition. To validate the TH2M model, a benchmark suite was created that provides a hierarchical classification of different coupling combinations of the individual processes. This proves the validity and correct implementation of all terms of the model equations.
- !4131 Dissolution of gas into the liquid phase, completing the phase transition feature in TH2M
- !4131 Two tests validate the dissolution process and the diffusive transport of the dissolved gas in the water phase
PhaseField
- Spectral decomposition for energy split has been added.
ThermoRichardsFlow
- !4100 Adding thermo-osmotic and thermo-filtration effects
ThermalTwoPhaseFlowPP
- !4136 Adding a third component with equilibrium partitioning between liquid and gas phases.
- !4194 Correct the energy equation and heat pipe benchmark results.
Component transport process / reactive transport process with coupling of Phreeqc
- !4106 Enable chemical speciation parallelization on CPU.
- !4130 Update the description of governing equations in the documentation of the process.
- !4207 Enable a new type of chemical solver "self-contained chemical solver".
HeatTransportBHE
- !4102
Server Communication (Python Interface) pre and post timestep
: Enabling the server communication (python interface) before (pre) and after (post) time step. - !4208
PowerCurveFlowCurve
-function: Adding PowerCurveFlowCurve function to flow_and_temperature_control options in HeatTransportBHE process.
LiquidFlow process
- !4201 Aperture size for inclined element.
ThermoRichardsMechanics and ThermoHydroMechanics
- !4100 Adding thermo-osmotic and thermo-filtration effects / fixing contributions in THM.
- !4153 Separates the constitutive setting of the TRM process from computations involving shape matrices .
- !4198 Splits the constitutive setting of the TRM process into modular pieces.
- !4236 Re-enables pressure and temperature dependent density models in TRM.
Constitutive relations (material models)
Thermal models
- !4162 Adding temperature-dependent thermal properties due to first order phase change of pore fluid making
HeatConduction
process nonlinear for capturing soil freezing phenomena
Numerics
- !4178 Isotropic diffusion stabilization for solving the advection-diffusion equation.
- !4185 Apply the isotropic diffusion stabilization to ThermoHydroMechanics process.
- !4165 Full up winding scheme for HT.
- !4196 Applied the full upwind stabilization to THM process.
Tools
- !4176 Most of the tools should now also work when OGS was built with PETSc.
- !4252 Allow the removal of point-elements from meshes via the
removeMeshElements
-tool. - !4270 Added "MeshMapping"-tool for handling all options for 2D mesh mapping, i.e. mapping based on a raster or another mesh, or to a static value.
Data Explorer
- !4250 Adding support for *.2dm triangle meshes via GMS Import.
- !4252 Allow the removal of point-elements from meshes.
- [!4265](https://gitlab.opengeosys.org/ogs/ogs/-/merge_requests/4265 "[DE] Added resolution aware scaling for GUI elements"...
6.4.2
See www.opengeosys.org/releases/6.4.2/ for binary downloads.
Overview
Some of the highlights of this release are: the extension of the TH2M process to handle phase transitions, more processes can be run in parallel with PETSc and Taylor-Hood Elements, the new HDF5-based input/output routines, and the introduction of Jupyter Notebook based benchmarks (see an example).
Process' changes
- !3963 Enabled equation wise flexibility in the use of compensate_non_equilibrium_initial_residuum.
TH2M
- !3839 Extend Jacobian with Laplacian's derivatives.
- !3942 Thermal conductivity of the medium can now be defined in the input file.
- !4034 Phase transition was revised and some errors were fixed. Energy transport now includes diffusion processes, diffusion in the mass balance is now dependent on capillary pressure. Tests have been added, including the revised heatpipe with analytical solution.
Component transport process / reactive transport process with coupling of Phreeqc
- !3796 Extend the input of surface complexation sites in moles via the MaterialPropertyLib for HC-Phreeqc coupling.
- !3903 Enable to use cation exchange and surface complexation models simultaneously for HC-Phreeqc coupling.
- !3918 Add a "fixing pe" option.
- !3931 Support the use of PETSc nonlinear solver.
- !4004 Add Newton's method based linearization scheme for solving non-conservative formulation.
- !4006 Output total mass flux and residual mass flux by node-wise.
Thermo-Richards-Mechanics
- !3980 Added liquid density and viscosity output.
- !3547
Implementation of the vapour diffusion and the latent heat terms of TRM.
HeatConduction
- !3972 Assembly in inclined elements.
Hydro-Mechanics
- !3848 Use permeability strain derivative in the jacobian for HM (for embedded fracture permeability model).
Heat Transport BHE
- !4007 Changed python based Server Communication process (e.g. with SimulationX) from postTimestep to preTimestep.
ThermalTwoPhaseFlowPP
Material models
- !3929 Add the Verma-Pruess porosity-permeability model.
- !3941 Modify the "EffectiveThermalConductivityPorosityMixing" property to allow for two- and three phase media.
- !3945 New property IdealGasLawBinaryMixture.
- !3923
[MPL/RelPermNonWettingPhaseVanGenuchtenMualem] replace the Newton-Raphson method with the Regula–Falsi Method. - !3992 Enabled fracture normal rotation with the EmbeddedFracturePermeability model.
Numerics
- !3871 Integration order 4 implemented for Tetrahedrals. For an overview over OGS's integration methods see also !4021.
- !3907 Added new Eigen iterative solvers: BiCGSTABL, IDRS and IDRSTABL.
- !3882 Adds support for Taylor-Hood elements to Python boundary conditions and Python source terms.
- !3963 Enabled equation wise flexibility in the use of compensate_non_equilibrium_initial_residuum.
- !3991 Enable to use 13 node pyramid and 15 node prism.
Parallel computing
- !3805 [partmesh] Removed the option of
-q
or--lh_elements
for the implementation of parallel computing with Taylor Hood elements. - !3866 Parallel computing with Taylor-Hood elements: implementation and tests with HydroMechanics process.
- !3920 Enable parallel computing in TRM with Taylor-Hood elements.
- !3919
Enable node search function work under MPI. - !4047 Enable parallel computing in TH2M with Taylor-Hood elements.
File I/O
- !3857 VTK mesh converter: safely convert all integer types.
- !3915 HDF output option: Fast file I/O and data integrity
- !4033 Rename HydraulicFlow and HeatFlux to VolumetricFlowRate (for volumetric formulations (mass balance divided by density) / MassFlowRate and HeatFlowRate.
Utility
- !3863 Added the conversion of quadratic quadrilateral elements in GMSH2OGS
GeoLib
- !3935 Change TemplateVec::getVector() return value from
vector<T*> const*
tovector<T*> const&
Project file syntax
- !3962 Apply patches marked with
after_includes="true"
-attribute after<include>
s are evaluatetd, docs.
ogs
- !3976 Added parameter
-m
for specifying a mesh input directory.
Testing
- !3930 Notebooks are now tested as part of
ctest
. See docs for more info. - !3901 [TRM] Added a benchmark of point heat source for TRM.
- !4001 Added a simple MKL benchmark.
- !4005 Run TaskCDECOVALEX2023 with parallel computing.
- !4021 Adds extensive unit tests for OGS's quadrature schemes. Now for each supported integration method and integration on each mesh element type we test, which polynomial order we can integrate exactly.
- !4012
Added parallel computing benchmarks for ThermoRichardsFlow.
Bug fixes
- !3932 Fixed several memory leaks and access bugs.
- !3956 THM: Fix temperature equation for case w/o thermal osmosis.
- !3978 Fix access of transport porosity as medium property in TRM.
- !3919
Enable node search function work under MPI. - !4021 Fixes pyramid integration for integration order 1. Note, the location of the single integration point was changed! If you have any restart data with integration order 1, the respective location will silently change. However, that seems acceptable since before the pyramid order 1 integration was just wrong.
- !4051 Changes the input storage order of tensorial properties of MPL. Now it is row major, before it was column major. The new row major storage order is the storage order that naturally arises in prj files. The old behavior was not a bug per se, but could very likely lead to subtle errors with asymmetric tensorial properties.
- !4055 Fixing a bug in Process::setInitialConditions under PETSc.
CMake
6.4.1
See www.opengeosys.org/releases/6.4.1/ for binary downloads.
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...
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:
6.3.3
Overview
This release contains a lot of improvements in all processes and also new material properties. Mostly bug fixes and documentation and procedures improvements. Stay tuned for the next major release 6.4.0 featuring new processes implementations.
Features
- You can
<include file="../path/to/file.xml">
other XML files into a.prj
-file. !3081
Process' changes
- Reactive transport process:
- allow to assign chemical formula alternative to a component when defining water composition. !3122
- output equilibrium and kinetic reactants (immobile phase) in amount. !3138, !3141
- Heat Transport BHE process: allow to specify a flow and temperature control condition with the BHE inflow rate and temperature values both following the corresponding curves. !3125
- ThermoHydroMechanics:
- The storage is now derived from the fluid density and the solid bulk modulus. !3159
- Fix bug in temperature equation for non-zero velocity. !3193
- HydroMechanics: Allow linear shape functions for displacement. !3334
- Use MPL properties in HeatConduction process. !3062
- Fix bug in deactivation of subdomains !3065
- Exterior forces output in LiquidFlow and HeatConduction. !3068
- Allow thermal expansion to be anisotropic in ThermoHydroMechanics process. !3107
- Improve generic interface for updating medium property variables. !3262
- Improve generic interface for computing secondary variables. !3227
- Component transport process: output flow velocity averaged over integration points. !3254
Boundary condition and source terms
- Added a special Dirichlet boundary condition called "SolutionDependentDirichlet". The value assigned for the boundary condition is dependent on the process solution of last time step. !3085, !3123
- Cleanup of source term implementations (use volumetric source terms for line source terms). !3233
Numerics
- Changed the way to pass dot x for staggered scheme. !3082
- Add dotx to postNonLinearSolver. !3164
- The extrapolators now accept an empty integration point values vector, in which case these are ignored. For now relevant only for LIE/SD process. !3117
- LIE; Update Heaviside function to [-1/2,1/2] range. !3140
Parameter
- The "Function" type parameter becomes independent from a domain specification, i.e. it is not any longer possible and necessary to specify a domain via a mesh tag !3054
- Extend the "Function" type parameter to handle time in the expressions introducing the t variable, additionally to the currently available x, y, z. !3054
- Pass curves to the "Function" parameter, such that they can be used in expressions like
curveA(sin(t))
. !3058 - Increased the tolerance for |A|=1 test in coordinate system. !3203
Time stepping
- Fixed bugs in the fixed time output. !3026
- Removed the fixed output time data from time stepper classes. !3080
- Allow time stepping continue after nonlinear fails in the staggered coupling loop. !3106
Material models
- New material models:
- strain dependent permeability !3236
- relative permeability model 'RelativePermeabilityUdell'. !3290
- saturation dependent thermal conductivity. !3298
- permeability model 'Kozeny-Carman Model'. !3264
- Linear, saturation dependent swelling stress model. !3096
- Pass variables from previous time step to MPL Property::value() calls where increments are required. All *rate variables were removed in
favor of the increments. !3102 - Use 2D coordinate system for LinearElasticOrthotropic solid material. A bugfix, now allowing 2D anisotropy and solid material orthotropy to be used simultaneously. !3165
- Unused MPL properties are shown as warnings after successful run in debug mode. !3197
- Error message now informs user of missing properties on the medium scale. !3337
- Bugfix of a 2D case in MFront's implementation of Mohr-Coulomb-Abbo-Sloan anisotropic model. !3260
- Update interface of the solid material models now accepting MPL Variables. !3261
File I/O
- New optional output format XDMF:
- light data is written into .xdmf file and heavy data into .h5 file. !3184
- reduced number of iNodes for HPC applications and removed redundancies in file output. !3246
Visualization
- Refactored insitu-functionality for VTK 9 / ParaView 5.8. The mpi container generated by the CI job now contains this functionality. !3092
partmesh
tool now exports "vtkGhostType" array indicating duplicate cells. !3111- Fixed ghost element bug #3035. !3299
Documentation and webpages
- Update the Heat_Transport_BHE PipeNetwork Tutorial to TESPy version 0.3.x API. !3070
- Three-part video tutorial available on YouTube. !3278
- New benchmark based the Liakopoulos experiment for RichardsMechanics. !3175
- New test of heat transport in liquid flow with a constant velocity, HeatTransportInStationaryFlow. !3194, !3328
- Fixed a formula display in "BGRa creep model". !3329
- Switched from Pandoc to GoldMark Markdown parser. !3076
- Added troubleshooting web page for runtime issues. !3129
- Web site usage tracking with Plausible, No personal data is tracked. Fully GDPR-compliant. !3168
- Added web pages on how to get support and fill a bug report. Also enabled GitLabs Service Desk feature. !3270
Tests
- CTests now have labels based on their subdir in
ProcessLib
. !3079 - LARGE benchmarks are determined by their
RUNTIME
given inAddTest()
/OgsTest()
. Current threshold: 60 s. !3079 - Added
DISABLED
-paramter toAddTest()
/`OgsTest(). !3079 - Run PETSc LARGE benchmarks in CI. !3079
- Add tests for mesh element quality criteria, fixing bug in AngleSkew criterion. !3279
- Updated to MathJax 3 for web formulas. !3300
- Better ctest dependencies and gui utils tests. !3323
- Changed the output name in square_5500x5500_staggered_scheme_adaptive_dt.prj. !3331
New tools
- Support for processing large meshes on envinf1. !3099
- Raster2PointCloud: Converts raster data into point clouds with an intensity-based density of randomised points per pixel for visualisation in ParaView/Unity. !3077
- Conversion of linear to quadratic mesh now supports Quad4 to Quad9 conversion. !3090
- Raster2Mesh: Converts an ASCII raster file into 2D mesh. Pixel values can be interpreted as elevation of mesh nodes or as scalar values for mesh elements. !3109
- AssignRasterDataToMesh: Adds raster information as a scalar array to an existing 2D mesh. !3174
- ExtractMaterials: Splits a mesh with n material groups into n meshes, each containing only the elements of the same material. !3116
partmesh
: Added optional-x
-argument to specify metis input mesh. !3171- IntegrateBoreholesIntoMesh: Integrates boreholes/BHEs as line elements into pre-existing mesh. !3188
- VerticalSliceExtraction: Constructs a vertical 2D slice out of a collection of horizontal 2D layers. !3273
- AddElementQuality: Adds evaluation of element quality criterion as data array to the mesh. !3283
CI & Infrastructure
cppcheck
-report. !3053.- Package DataExplorer into container. !3105
- Unified and local (in the build-dir) Python environment with Poetry. !3133
- Python formatting check with black. !3158 and #3044
- Install dependencies for redistributable packages. !3226
- Publish to Docker container for serial configuration. !3271
CMake
- Reduced CMake runtime by 2-3 s. !3084
- Updated submodule MGIS for proper tfel finding. !3127
- Added option
OGS_USE_XDMF
(defaults toOFF
) for enabling Xdmf output. !3295 - Use generator expressions for target_link_libraries(). !3297
- Move global preprocessor definitions to targets. !3330
Version info
- Pandoc requirement for web site removed! !3076
- PETSc 3.11.2. !3094
- Update exprtk submodule to the most recent master commit (d312ba9
) dated 1 Jan. 2020. !3112 - Apple Clang (Xcode) 11.0 required. !3115
- New (optional) dependency: HDF5 1.10.5. (!3246, !3295)
- New (optional) dependency: Libxml2 2.9.10. (!3246, !3295)