Release Highlights
- Support for water mass summary vectors
- Support for Hypre preconditioner with GPU
- Improved support for satellite injection/production groups
- Improved robustness for well solves and well group behaviour
- Support for Python one-phase (water) and gas-water simulators
- Reduced memory consumption when hysteresis model is not used
- Support for
WECONkeyword item 9, the name of the follow-on well - Improved performance for property evaluation and numerical aquifers
- Support for
WSEGAICDkeyword item 22, the density function exponent - The consistency checks for saturation functions are turned on by default
- The peak memory allocation when recreating the linear solver is reduced
- Support for running simulations beyond 31-Dec-9999 (up to 292 million years)
- New and experimental hybrid Newton nonlinear preconditioning using neural networks
- New model for biofilm effects in
CO2STOREandH2STOREsimulations (BIOFILMkeyword) - Support for additional entries in
TUNING(NEWTMX,NEWTMN,TRGMBE,TRGCNV, andXXXCNV)
What's Changed
- bump OPM version by @multitalentloes in #6149
- Use Correct Array Name for RVSAT Data by @bska in #6153
- Changes for parallel runs with multisegment wells that have shut perforations by @lisajulia in #6104
- fix mech extractor by @akva2 in #6118
- Fix to 2025.04-r1 build candidate in clang by @daavid00 in #6156
- Missing permFactTransMultiplier by MICP by @daavid00 in #6157
- Ensure shut wells are logged correctly. by @atgeirr in #6164
- using bigger epislon for Simulator class by @GitPaean in #6151
- Refactor calls to broadcast in MultisegmentWell_impl.hpp by @lisajulia in #6021
- moving flowPhaseToModelPhaseIdx to WellInterfaceIndices by @GitPaean in #6167
- Adapt to New ScheduleState Data Member by @bska in #6158
- two typo correction by @GitPaean in #6172
- Fix runs with distributed MSWells with only shut perforations on one process by @lisajulia in #6184
- intersectWithIPR - add extrapolation for last interval whenever it applies by @steink in #6187
- adding PLYSHEAR to UnsupportedFlowKeywords by @GitPaean in #6182
- CompositionalWellModel: some janitoring by @akva2 in #6193
- parametersystem: add missing throw's by @akva2 in #6194
- Fixing index single comp well state and many others by @GitPaean in #6197
- fixed: gas and water rates swapped by @akva2 in #6198
- Do not divide by zero but check before dividing by @lisajulia in #6185
- pinch: put more cases in multi-registration by @akva2 in #6190
- Store and use last valid network pressure by @totto82 in #6200
- Janitoring: quell static analyzer issues by @akva2 in #6196
- removing something not used or not defined by @GitPaean in #6160
- AdaptiveTimeStepping: some janitoring by @akva2 in #6192
- Fix incorrect reference in TracerModel for solTracerRate by @jakobtorben in #6207
- Regression tests: more multi registration by @akva2 in #6208
- Remove unneeded broadcast() overload. by @atgeirr in #6180
- Remove unused capture of 'this'. by @atgeirr in #6212
- use standard include paths (angle brackets, path qualified) by @akva2 in #6213
- Adding missing column name in INFOSTEP by @daavid00 in #6210
- Remove mpiutil by @akva2 in #6215
- TransFluxModule: some janitoring by @akva2 in #6223
- MultiPhase(Model|Problem|ExtensiveQuantities): some janitoring by @akva2 in #6222
- EnergyModule: some janitoring by @akva2 in #6220
- ForchheimerFluxModule: some janitoring by @akva2 in #6221
- changed: remove EWOMS_CATCH_PARALLEL_EXCEPTIONS_FATAL by @akva2 in #6224
- Simulator: some janitoring by @akva2 in #6228
- DiscreteFracture: some janitoring by @akva2 in #6229
- Splitting StandardPreconditioners to make it specializable for GPU by @kjetilly in #6216
- Log local switching by @totto82 in #6145
- Fix error in comment. by @atgeirr in #6230
- Install is_gpu_operator.hpp Header by @bska in #6233
- removing Scalar template paramter from CompWellState and SingleCompWellState. by @GitPaean in #6236
- avoid to use too small d = 1. - rs * rv. by @GitPaean in #6227
- Summary vectors for water mass by @daavid00 in #6181
- Reorder Well Data Report Function by @bska in #6237
- Split network and group update code by @totto82 in #6214
- fix namespace in linearsolverreport.hh by @multitalentloes in #6242
- NlddReporting: some minor refactoring by @akva2 in #6211
- Reduce discontinuities in serial simulation for CpGrid with LGRs by @aritorto in #6235
- Correct warning by @aritorto in #6248
- Store primary variables in well state, and improve well initialization by @atgeirr in #6114
- Throw if bhp is NaN in findTHP by @totto82 in #6246
- Move throws inside the loop over all wells to after the end of the loop by @lisajulia in #6244
- Assign Shut Connection Data for Owned Wells Only by @bska in #6238
- Add test for correct output for distributed wells by @lisajulia in #6232
- Rename index classes by @atgeirr in #6253
- add github action for checking manual labels by @akva2 in #6255
- fixed: pass by pointer instead of reference by @akva2 in #6254
- fixing compilation with older gcc compiler (GCC 9.X) by @GitPaean in #6258
- FvBaseAdLocalLinearizer: some janitoring by @akva2 in #6260
- Prefer In-Place Construction of Data::Connection Objects by @bska in #6247
- remove python 3.6 and 3.7 packages by @akva2 in #6256
- Refactor some of the MSWell code by @lisajulia in #6250
- FvBase(BoundaryContext|Constraints): some janitoring by @akva2 in #6262
- DiffusionModule: some janitoring by @akva2 in #6218
- Set enableDistributedWells flag in WellState upon restart by @vkip in #6257
- DirectionalMobility: janitoring by @akva2 in #6219
- DarcyFluxModule: some janitoring by @akva2 in #6217
- FvBaseDiscretization(FemAdapt): Some janitoring by @akva2 in #6263
- Better commandline naming by @atgeirr in #6264
- Make TracerModel thread parallel by @jakobtorben in #6206
- Instatiate preconditioners directly with GPU matrices by @kjetilly in #6241
- Janitoring: quell some clang warnings by @akva2 in #6267
- FvBaseElementContext: some janitoring by @akva2 in #6271
- Time step rejection if tolerance test fails by @erikhide in #6009
- Add optional iterations in the group switching algorithm by @totto82 in #5933
- unifying instantiation of variants related to Indices by @GitPaean in #6272
- FvBase(ExtensiveQuantites|FdLocalLinearizer): some janitoring by @akva2 in #6274
- Run Saturation Function Consistency Check on Main Grid Only by @bska in #6261
- FvBase(IntensiveQuantities|GradientCalculator): some janitoring by @akva2 in #6276
- FvBaseLinearizer: some janitoring by @akva2 in #6279
- Enable New Saturation Function Consistency Checks by Default by @bska in #6252
- FvBase(LocalResidual|NewtonConvergenceWriter|NewtonMethod|PrimaryVariables): some janitoring by @akva2 in #6281
- Add Regression Tests for UDA Compatibility by @bska in #6265
- FvBaseProblem: some janitoring by @akva2 in #6282
- TpfaLinearizer: some janitoring by @akva2 in #6283
- ECFV classes: some janitoring by @akva2 in #6284
- VCFV classes: Some janitoring by @akva2 in #6285
- BlackoilModel: some janitoring by @akva2 in #6286
- BlackOilModel: janitoring part2 by @akva2 in #6288
- FlashModel: Some janitoring by @akva2 in #6289
- models/io: Some janitoring by @akva2 in #6290
- NcpModel: Some janitoring by @akva2 in #6291
- models/Utils: Some janitoring by @akva2 in #6292
- Silence warning: return invalid value instead of no return. by @atgeirr in #6295
- Allow For Regex Metacharacters in Case Name During File Removal by @bska in #6293
- Ptflash model: some janitoring by @akva2 in #6298
- Add communication for calculating the max_pressure in maxPerfPress by @lisajulia in #6269
- Rename the functions globalToLocal, localToGlobal, activeToLocal and … by @lisajulia in #6300
- Pvs model: Some janitoring by @akva2 in #6301
- Richards model: Some janitoring by @akva2 in #6302
- models/utils: Some janitoring by @akva2 in #6303
- move alq_state to singleWellState by @totto82 in #6275
- adjust to upstream API change by @akva2 in #6312
- dont solve if converged (MSW) by @totto82 in #6251
- Add test for Multisegment wells: Well with 9 perforations on one segment by @lisajulia in #6294
- correct misleading macro name by @multitalentloes in #6309
- Further updates and fixes to general controller by @erikhide in #6280
- removing the unused and mistakenly defined function by @GitPaean in #6321
- Update PRT reports by @tskille in #6324
- reusing primary variable indices and flags defined by @GitPaean in #6322
- LGR Well by @arturcastiel in #6297
- using PrimaryVariables::numWellEq in MultisegmentWellSegments by @GitPaean in #6328
- Check if specified external partition file exists by @kjetilly in #6326
- Also check operability for wells without thp control by @totto82 in #6317
- Store wellgroup targets by @totto82 in #6311
- Bugfix: respect phase-specific group constraint actions by @atgeirr in #6331
- using group_limit_action.oil instead of allRates for better code readability and potentially better flexibility by @GitPaean in #6333
- Don't Copy Well Objects When Well Names are Sufficient by @bska in #6334
- Fixing --enable-dry-run=1 by @daavid00 in #6335
- Add CSV output of FIP and RESV data by @tskille in #6329
- Reservoir coupling: Communicate group potentials from slaves and compute guide rates by @hakonhagland in #6170
- Making a GPUISTL aware ISTLSolver by @kjetilly in #6270
- Fixed brace locations when compiling without CUDA by @kjetilly in #6342
- Add include to get fmt::join. by @atgeirr in #6343
- Some janitoring by @akva2 in #6344
- Reduce peak memory allocation when recreating linear solver by @atgeirr in #6345
- Add support for debug levels in DeferredLogger by @vkip in #6341
- [BUG] TSMINZ instead of TSFMIN by @daavid00 in #6332
- Reduce Number of Guide Rate Well Potential Messages by @bska in #6337
- open wells at well testing by @totto82 in #6319
- distinguishing injector or producter when setting well to be under pressure control during well testing. by @GitPaean in #6348
- Emit Converged in Zero Iteration Messages at Elevated Verbosity Level by @bska in #6350
- tpfalinearizer: Add conditional storage for energy, diffusion and dispersion by @jakobtorben in #6351
- Remove unneeded setPc() call. by @atgeirr in #6352
- (Partial) Support parallel runs for CpGrid with LGRs by @aritorto in #6330
- [cleanup] Remove unused setupCartesianToCompressed_() by @aritorto in #6354
- Janitoring: remove returns after throw by @akva2 in #6356
- Using partial specialization uniformly for compile-time optional modules. by @atgeirr in #6353
- Add mobility thresholding to NLDD by @jakobtorben in #6346
- Use if constexpr to handle conditionally stored members. by @atgeirr in #6359
- Some janitoring by @akva2 in #6361
- clean up memory and fix typo by @multitalentloes in #6360
- Emit Converged in Zero Iteration Messages at Elevated Verbosity Level by @bska in #6362
- moving FluidSystem::waterEnabled runtime_error to CompWellInterface by @GitPaean in #6364
- Allow calling BlackoilIntensiveQuantities::update() without an ElementContext by @atgeirr in #6365
- Relax Upper Bound Check for Mobile Displacing Oil by @bska in #6370
- Remove the if that discoordinates values on different ranks by @michal-toth in #6369
- VoigtArray and SymmTensor moved to opm-common by @akva2 in #6373
- Making possible to simulate 100 Million years by @daavid00 in #6336
- Fix for --enable-dry-run=1 --output-extra-convergence-info=steps,iterations by @daavid00 in #6375
- Cleaned up and fixed verbosity for time step controllers by @erikhide in #6320
- Test for dryruns by @daavid00 in #6376
- rocsparseCPR update incl bug fixes by @razvnane in #6339
- removing some unused functions in blackoilprimaryvariables by @GitPaean in #6381
- Optimize GPU DILU update calls by @multitalentloes in #6310
- Remove intensive quantities cache for time idx 1 by @jakobtorben in #6357
- MPI support for the new GPU aware ISTL Solver by @kjetilly in #6379
- Remove virtual/override pattern in recycleFirstIterationStorage by @jakobtorben in #6387
- Replace group controls wells and fix by @totto82 in #6355
- Normalize preconditioner type strings to lowercase by @jakobtorben in #6388
- Unit tests for the BlackOilFluidSystem on GPU by @kjetilly in #6385
- enable tuning for network_01_wtest by @GitPaean in #6390
- Add End-of-Episode Predicate to Flow Problem Classes by @bska in #6392
- Add in satellite production in reduction rates by @steink in #6393
- Update handling of depth=contact to use topmost fluid by @vkip in #6394
- Use stricter relative tolerance for one test. by @atgeirr in #6395
- Pick up infinite bhp in addition to nan by @vkip in #6396
- fixed: only run parallel carfin test with MPI by @akva2 in #6402
- removing a few undefined functions from WellGroupHelpers.hpp by @GitPaean in #6403
- Quieter terminal output by @atgeirr in #6400
- Update well potentials after balancing the network by @totto82 in #6389
- Check status from wellstate not the well object from Schedule by @totto82 in #6051
- [doc] Updated man page to reflect changes of flow help message. by @blattms in #6277
- Added --expt-relaxed-constexpr to test_gpuBlackOilFluidSystem by @kjetilly in #6398
- Support for CONV_NEW when CONV in RPTRST by @daavid00 in #6374
- Fix Signed-Vs-Unsigned Comparison Warning by @bska in #6414
- Refactor and update pvt tests by @atgeirr in #6407
- Allow Dockerfile to generate PyPI package from shared libs by @hakonhagland in #6142
- TUNING: XXX and TRG for CNV and MBE by @daavid00 in #6413
- Add missing include to test_norne_pvt by @vkip in #6417
- remove unused lambda capture by @akva2 in #6421
- Removing BASIC = n as invalid option by @daavid00 in #6422
- check the alternative_well_rate_init flag also for welltesting by @totto82 in #6416
- Add Support for Edge Conformal Grid Processing by @bska in #5806
- fixed: argument order differ in prototype and implementation by @akva2 in #6425
- Janitoring: quell some SCA warnings by @akva2 in #6426
- Parallel hypre by @hnil in #6384
- Make GpuSparseMatrix support blocksize 1 by @jakobtorben in #6401
- Add CUDA version checks for GpuSparseMatrixGeneric by @jakobtorben in #6430
- Add support for GPU input types with AMGX by @jakobtorben in #6423
- Faster pvt by @atgeirr in #6386
- Optimise memory transfers for gpuistl by @jakobtorben in #6406
- Serialise Satellite Injection Rates in Parallel by @bska in #6428
- Test WEFAC with PyAction in parallel by @blattms in #6431
- Warn the user for TUNING and --enable-tuning by @daavid00 in #6420
- initialize variables by @akva2 in #6433
- removing a few functions from EmptyModel by @GitPaean in #6434
- Eclmateriallawmanager: Adjust to restructure by @akva2 in #6441
- Fixed indexing in control-error filtering by @erikhide in #6442
- Reduce osscilations between stop and open by @totto82 in #6338
- Removing phase usage by @GitPaean in #6404
- For oscillation detection we only count gr switching after nupcol. by @totto82 in #6358
- Compiletime threephaseswitch by @atgeirr in #6367
- Make for-loop for properties use OMP also in the new implementation. by @atgeirr in #6448
- Fix inactive phase idx handling by @akva2 in #6446
- Support for NEWTMX and NEWTMN in TUNING by @daavid00 in #6378
- Make cpr weight calculation thread parallel by @jakobtorben in #6419
- Reservoir coupling: Allow slaves and master to activate at different times by @hakonhagland in #6440
- Fix RFT State Collection for Distributed Wells by @bska in #6449
- Add support for Hypre with GPU input types by @jakobtorben in #6444
- fix doxy issues by @akva2 in #6453
- UDQ support for GSATPROD by @daavid00 in #6429
- Only create Hypre preconditioner for double scalar type by @jakobtorben in #6455
- Include satellite injection, update satellite production by @steink in #6454
- Optimise CPR weight calculation by @jakobtorben in #6457
- Test PyPI wheels in docker containers by @hakonhagland in #6136
- Fixed python dockerfile directory names by @hakonhagland in #6459
- removing the function flowPhaseToModelPhaseIdx and reimplementing the other two mapping functions. by @GitPaean in #6443
- removing instantiation for two Indices setup with non-zero PVOffset by @GitPaean in #6460
- Fix python setup.py warnings by @hakonhagland in #6461
- python packaging: enable LTO by @akva2 in #6465
- Extract loop invariant in matrix assembly by @multitalentloes in #6466
- Tests for BlackOilFluidState on the GPU by @kjetilly in #5971
- Dont go back to classical approach during un-converged operability check by @totto82 in #6468
- Adapt to reduced enum sizes in upstream. by @atgeirr in #6471
- some cleaning up in blackoilprimaryvariables by @GitPaean in #6469
- Added include of cstdint by @kjetilly in #6474
- incorporating the item 22 of WSEGAICD by @GitPaean in #6473
- Support opening of following-on well by @totto82 in #6050
- Dont include temporary stopped wells among the wells considered for group control by @totto82 in #6463
- Use WELL_STATUS_CHANGE instead of REQUEST_SHUT/OPEN WELL by @totto82 in #6476
- Python gas-water simulator by @svenn-t in #6075
- Fix version compatibility issue in Hypre test by @jakobtorben in #6477
- python packaging: update to use python_simulator_modules target by @akva2 in #6478
- Some janitoring in python classes by @akva2 in #6479
- Check whether network is converged before accepting the iteration by @totto82 in #6467
- Fix MPI parallel ISTLSolverGPUISTL and register parallel GPU preconditioners by @jakobtorben in #6472
- BIOFILM effects for gas-water systems by @daavid00 in #6462
- Silence two warnings by @atgeirr in #6481
- adapting to upstream unit name change by @GitPaean in #6486
- CPR-AMG fully on the GPU with GpuIstl by @jakobtorben in #6308
- Biofilm and Calcite set to volume fraction instead of concentration by @daavid00 in #6487
- Add subsystem argument to detail profiling macros. by @atgeirr in #6489
- Add parameter for restricting status oscillations between stop and open by @totto82 in #6456
- Fix race condition in Python tests by disabling async ECL output by @hakonhagland in #6491
- Fix Python gas-water simulator test failures by @svenn-t in #6488
- Add support for Python docstring.json template format by @hakonhagland in #6418
- Improved python docker unit tests debugging by @hakonhagland in #6492
- Python one-phase (water) simulator by @svenn-t in #6482
- quell some unused warnings by @akva2 in #6490
- Avoid ending up as GRUP when oscillating by @totto82 in #6495
- Update well/group controls before network updates by @totto82 in #6470
- Fix GPU backend specification for Hypre by @jakobtorben in #6496
- applying the regional multipler to PINCH NNC also by @GitPaean in #6498
- Add check to disallow RESV/VREP-control for groups having satellite sub-groups by @steink in #6480
- only applying regional multiplier to PINCH NNC by @GitPaean in #6500
- Add CONTRIBUTING.md file by @hakonhagland in #6484
- Pre-commit framework by @hakonhagland in #6483
- Remove unnecessary mutable qualifier for the solution object. by @atgeirr in #6501
- scale segment rates and pressure in well testing instead of updateWellStateWithTarget by @totto82 in #6493
- Use new lineariser for simulators with EnableBrine by @daavid00 in #6503
- Add missing invB in BioeffectsFluxes by @daavid00 in #6504
- Modernize README by @multitalentloes in #6314
- Use full links by @multitalentloes in #6507
- Resolve AMD GPU GpuSparseMatrixGeneric bug by @multitalentloes in #6451
- Janitoring: removing unused definitions in models/blackoil/blackoil*.hh by @daavid00 in #6512
- Removing trailing spaces and adding eol at eof by @daavid00 in #6513
- Add no-hysteresis variant of Flow by @atgeirr in #6510
- Janitoring: fix some doxy issues by @akva2 in #6514
- Hybrid newton flag by @lechevaa in #6424
- Fix quadmath problems on ppc64el with IEEE long double by @blattms in #6497
- Janitoring: removing unused definitions in models/common/*.hh by @daavid00 in #6515
- Generalize initial value retrieval of reduction operators by @SoilRos in #6518
- Remove inconsistencies in density for Distributed wells in parallel runs by @michal-toth in #6452
- removing dumplicated numExtbos when calculating saltConcentrationIdx by @GitPaean in #6524
- Adding *.DS_Store to .gitignore (any more?) by @daavid00 in #6517
- adding a virtual destructor for WellInterfaceGeneric by @GitPaean in #6526
- updating the gas or oil phase densities when only gas or oil is active. by @GitPaean in #6523
- Add CPR weights thread parallelization option by @jakobtorben in #6525
- Fix hybrid newton python tests imports by @lechevaa in #6522
- fixed: do not enable tensorflow test without tensorflow on the system by @akva2 in #6529
- Set linear solver accelerator to CPU for NLDD local linear solvers by @jakobtorben in #6528
- use reportsteps instead of timesteps (deprecation warning) by @daavid00 in #6536
- UDQ support for WTRACER by @daavid00 in #6549
- Account for NTG in rock heat term by @daavid00 in #6550
- Bump OPM version to 2025.10 by @daavid00 in #6561
New Contributors
- @arturcastiel made their first contribution in #6297
- @lechevaa made their first contribution in #6424
Full Changelog: release/2025.04/final...release/2025.10/final