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.
!4699x_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
!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.
!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
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.
!4785
[cmake] Updated sanitizers logic. Changes CMake options OGS_ADDRESS_SANITIZER to ENABLE_ASAN and OGS_UNDEFINED_BEHAVIOR_SANITIZER to ENABLE_UBSAN.
Infrastructure
!4542
[ci] Introduced MR label ci::unit_tests which runs unit tests only (skips ctests).
!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.
A possibly existing property Y will not be written!
In case of empty variables section all available variables are outputted
<output> ...
<variables></variables></output>
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.
<output> ...
<meshes><mesh>bulkmesh</mesh><!-- output entire bulk mesh --><meshmaterial_ids="0,2,4">bulkmesh</mesh><!-- output only those parts with specified mat IDs --></meshes></output>
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: