Commit Graph
24402 Commits
Author SHA1 Message Date
Arne Morten Kvarving 2f8e900909 add option to use development simulator binaries in split comm tests 2026-05-15 11:11:27 +02:00
Arne Morten Kvarving b73789cedf add dev_simulator to all comparison tests 2026-05-15 11:11:27 +02:00
Arne Morten Kvarving a5407b87f5 add option to use development simulator binaries in comparison tests 2026-05-15 11:11:27 +02:00
Arne Morten Kvarving a387877b8a add dev_simulator to all parallel restart tests 2026-05-15 11:11:27 +02:00
Arne Morten Kvarving a87457e16b add option to use development simulator binaries in parallel restart tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving 011c230d9b add dev_simulator to all parallel tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving a51b1890eb add option to use development simulator binaries in parallel tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving b3a7d705ad add dev_simulator to all restart tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving dad4b2da60 add option to use development simulator binaries in restart tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving a12d251033 add dev_simulator to all runSimulator tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving 18dc94b478 add option to use development simulator binaries in simulator run tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving 274ad770a0 add dev_simulator to all regression tests 2026-05-14 13:45:06 +02:00
Arne Morten Kvarving 8a94bbc5f5 add option to use development simulator binaries in regression tests 2026-05-13 13:45:40 +02:00
Bård Skaflestad bc0626acff Merge pull request #7045 from GitPaean/allow_default_values
defaulted item values should be allowed for partially supported keywords
2026-05-12 09:26:59 +02:00
Kai Bao 98f9c665d9 defaulted item values should be allowed
for partially supported keywords.
2026-05-11 23:07:27 +02:00
Atgeirr Flø Rasmussen 63a05a4cf4 Merge pull request #7037 from multitalentloes/extract_gaswatertypetag
extract gaswater typetag info from cpp
2026-05-07 10:59:19 +02:00
Bård Skaflestad 33efbc9f1f Merge pull request #7040 from multitalentloes/remove_amg_macro
remove unused AMG macros
2026-05-07 10:46:55 +02:00
Tobias Meyer Andersen 3071269b64 remove unused AMG macros 2026-05-07 10:26:23 +02:00
Atgeirr Flø Rasmussen a0dc8b1ff3 Merge pull request #7036 from atgeirr/unify-gitignore
Unify .gitignore files.
2026-05-06 15:13:39 +02:00
Tobias Meyer Andersen 96d028f3af update cmake 2026-05-06 13:29:32 +02:00
Bård Skaflestad fb979cb5c3 Merge pull request #7035 from atgeirr/add-more-tracy-hooks
Add more tracy hooks
2026-05-05 17:17:55 +02:00
Bård Skaflestad be161f7d74 Merge pull request #7032 from GitPaean/scalar_getFirstPerforationFluidStateInfo
not using Evaluation for saltConcentration for getFirstPerforationFluidStateInfo()
2026-05-05 17:11:49 +02:00
Atgeirr Flø Rasmussen 8a3c342c8a Unify .gitignore files. 2026-05-05 15:24:05 +02:00
Atgeirr Flø Rasmussen 3252e487e4 Add some extra profiling blocks 2026-05-05 14:29:10 +02:00
Atgeirr Flø Rasmussen 26bd980e3d Speedup communication by doing single sum(). 2026-05-05 14:29:10 +02:00
Atgeirr Flø Rasmussen 390e807aa3 Add some more high-level tracy hooks.
Mostly for looking at TemperatureModel performance.
No hooks in inner loops (cell or connection loops), so runtime with tracy
active should be very close to without.
2026-05-05 11:51:00 +02:00
Bård Skaflestad 19d3256a24 Merge pull request #7034 from akva2/no_warning_parmetis_serial
fixed: do not print warning about missing ParMETIS in serial builds
2026-05-05 09:32:41 +02:00
Tobias Meyer Andersen c9cd630a25 Merge pull request #7027 from kjetilly/intensive_quantities_2
GPU portability: OPM_HOST_DEVICE/OPM_THROW additions and fluidSystem() use
2026-05-05 09:27:44 +02:00
Arne Morten Kvarving bae64e9121 fixed: do not print warning about missing ParMETIS in serial builds 2026-05-05 08:52:30 +02:00
Kjetil Olsen Lye b2ca7e8769 GPU portability: OPM_HOST_DEVICE/OPM_THROW additions and fluidSystem() use
Decorates inline helpers in blackoil*modules.hh, blackoilprimaryvariables.hh,
directionalmobility.hh, tpfalinearizer.hh, NewTranFluxModule.hpp,
TemperatureModel.hpp and BlackOilEnergyIntensiveQuantitiesGlobalIndex.hpp
with OPM_HOST_DEVICE, replaces a few raw `throw`s with OPM_THROW, and
switches static `FluidSystem::` accesses to instance-based
`fluidState.fluidSystem()` / `getFluidSystem()` so the same code works
when the fluid system lives on the device.  Test
test_gpu_linear_two_phase_material.cu picks up the matching template
adjustments.
2026-05-05 07:55:21 +02:00
Tobias Meyer Andersen b5d83be5d8 Merge pull request #7026 from kjetilly/intensive_quantities_1
gpu_smart_pointer: extend GPU smart-pointer utilities
2026-05-04 16:22:22 +02:00
Kai Bao a2e584a0ed not using Evaluation for saltConcentration for getFirstPerforationFluidStateInfo
its derivative should not be used anyway.
2026-05-04 15:32:02 +02:00
Tobias Meyer Andersen 8096d5ba32 Remove unneeded preprocessor guard 2026-05-04 14:55:40 +02:00
Tor Harald Sandve 42990edc31 Merge pull request #7025 from hakonhagland/fix_mg_gr_dist2
Reservoir coupling: Cap master-group targets at slave potential
2026-05-04 10:36:05 +02:00
Håkon Hægland f61b1c1163 Cap RC master-group targets at slave potential
When a reservoir-coupling master group's guide-rate-distributed
production target exceeds the slave's reported potential, the slave
cannot deliver the requested rate and the shortfall is lost from the
parent group's total.  Cap each capacity-limited group's target at
the slave's potential and redistribute the surplus to sibling master
groups via the standard FractionCalculator / localReduction
machinery, so the parent (typically FIELD) can still meet its
overall target.

The redistribution is implemented in
RescoupConstraintsCalculator::calculateMasterGroupConstraintsAndSendToSlaves
and is structured as four phases:

  Pre-phase: restore master-group control modes from the Schedule
    (restoreMasterGroupControlsFromSchedule_); switch master groups
    of inactive slaves to individual control so they do not consume
    a share of the parent's target
    (excludeInactiveSlaveMasterGroupsFromDistribution_); recompute
    GCW and FIELD target reduction (updateGCWAndTargetReductions_).

  Phase 1: compute initial guide-rate-distributed targets per
    master group via GroupConstraintCalculator.

  Phase 2: cap-and-redistribute.  Groups whose target exceeds the
    slave-reported potential are capped, switched to individual
    control, and the FIELD reduction is recomputed.  Uncapped
    groups are then re-evaluated and absorb the surplus.  Finally
    all master groups are switched to individual control with their
    final allocated targets.

  Phase 3: send the (target, cmode, per-rate-type limits) triples
    to each activated slave.

The driver runs on every rank of the master communicator: its
helpers call collective MPI operations
(updateGroupControlledWells does comm_.sum, GroupConstraintCalculator
and updateGroupTargetReduction walk GroupStateHelper which is
collective).  The slave-facing MPI sends in
sendSlaveGroupConstraintsToSlave_ are rank-0-only inside the
underlying helpers, so the Phase-3 loop is safe to enter from every
rank.  A trailing GroupState::communicate_rates(comm) aggregates any
per-rank-partial reduction rates so the post-redistribution state is
consistent across master ranks.

Supporting changes:

* GroupStateHelper::updateGroupControlledWells -- conditional GCW
  for master groups: GCW=1 under FLD/NONE control, GCW=0 under
  individual control.  Without this the calculator cannot
  distinguish between capped groups (excluded from distribution)
  and uncapped groups (absorbing the surplus).

* BlackoilWellModel::updateGroupControls -- guard at the top that
  skips master groups, plus a new isReservoirCouplingMasterGroup
  forwarding method on the RescoupProxy facade.  Master-group
  controls and targets must be read-only outside the constraint
  calculator; the guard prevents checkGroupHigherConstraints and
  updateGroupIndividualControl from modifying them during the
  assemble() Newton iteration.

Known limitations, deferred to follow-up work:

* A master group with GCONPROD CONTROL_MODE set to a
  rate mode (ORAT, WRAT, ...) AND RESPOND_TO_PARENT = YES has both
  an own rate limit and parent control available.  The current GCW
  logic returns 0 in this case and excludes the group from the
  FractionCalculator guide-rate sum, so Phase 1's localFraction
  yields a wrong target.  Typical RC setups have master groups
  acting as pure routing nodes (CONTROL_MODE = FLD or NONE) and are
  unaffected.

* Injection -- the cap-and-redistribute pass currently applies only
  to production master groups.  Per-phase injection extension
  requires a slave-reported injection potential on
  SlaveGroupInjectionData (currently absent) plus the parallel set
  of helpers.

* Finished slaves -- the inactive-slave handling covers only the
  not-yet-activated case.  A slave run can finish before the master;
  detecting that finish is a separate PR with its own MPI-protocol
  changes.
2026-05-01 08:20:37 +02:00
Kjetil Olsen Lye 1ce9999f45 gpu_smart_pointer: extend GPU smart-pointer utilities
Adds host-side allocator helpers, host/device-decorated raw-pointer
accessors and small additions to MiniVector that the rest of the GPU
intensive-quantities work depends on.  Updates test_gpu_smart_pointers.cu
to cover the new behaviour.
2026-04-30 20:50:30 +00:00
Bård Skaflestad 0116ca6531 Merge pull request #7022 from GitPaean/correcting_EQUIL_support
updating the EQUIL keyword item names in PartiallySupportedFlowKeywords
2026-04-30 15:52:43 +02:00
Kai Bao ed25b00a54 Merge pull request #7024 from GitPaean/linearsolver_injectivity
fall back to use ilu0 preconditioner for polymer injectivity run instead of throw
2026-04-30 15:47:35 +02:00
Kai Bao 8e1d439515 fall back to use ilu0 preconditioner for polymer injectivity run
instead of throw, so that those cases can be run with default
parameters.
2026-04-30 14:49:02 +02:00
Kjetil Olsen Lye 49dc9bcb18 Basic .clang-tidy and recommendation to use it (#7023)
* Added .clang-tidy

* Added description in CONTRIBUTION.md
2026-04-30 13:52:56 +02:00
Kai Bao c67ad2bea6 updating the EQUIL keyword item names in PartiallySupportedFlowKeywords 2026-04-29 22:54:02 +02:00
Bård Skaflestad 04873a8eb9 Merge pull request #7019 from GitPaean/DEBUGLOG_co2_ptflash_ecfv
Add DEBUGLOG backend to PTFlash example co2_ptflash_ecfv
2026-04-29 14:05:49 +02:00
Markus Blatt 481b03f787 Merge pull request #7012 from blattms/bugfix/support-parmetis-again
[cmake] Search for ParMETIS and use it if it is there.
2026-04-29 13:15:34 +02:00
Kai Bao bb5d1230fb Add DEBUGLOG backend to PTFlash example co2_ptflash_ecfv 2026-04-29 13:14:21 +02:00
Markus Blatt 88b985c2af Document the processing of the *prereq.cmake file a bit. 2026-04-29 12:52:35 +02:00
Markus Blatt 2314c80699 Only search for ParMETIS in the prereq file
and make sure that we always search for ParMETIS in the *prereq.cmake file

This file gets processed when running CMake for opm-simulators and
during a find_package(opm-simulators) call.
2026-04-29 12:52:35 +02:00
Arne Morten Kvarving 50478b7516 Merge pull request #7002 from blattms/bugfix/recover-avx-flags
[bugfix,cmake] Make sure avx2 defines are set for compilation if supported.
2026-04-29 08:14:31 +02:00
Markus Blatt 827fdda14f [bugfix] Make sure avx2 defines are set for compilation if supported.
Previously this was done via config.h, but due to the recent build
system refactoring these defines became MIA and some  code is never
activated even if it would be supported by the hardware.

We now set the necessary compile definitois as properties for the relevant
source files to fix this.
2026-04-28 20:58:40 +02:00
Markus Blatt 656cd9540c Merge pull request #6972 from aritorto/bridgeNNCs
[LGR] Pass in writeInitial an NNCCollection to allow output of the 3 NNC types
2026-04-28 20:06:58 +02:00
Bård Skaflestad 3bce02799a Merge pull request #7013 from akva2/janitoring_move_log_to_tu
SimulatorFullyImplicitBlackoil: move tuning logging to TU
2026-04-28 13:57:19 +02:00