20#ifndef OPM_REGIONAVERAGECALCULATOR_HPP_HEADER_INCLUDED
21#define OPM_REGIONAVERAGECALCULATOR_HPP_HEADER_INCLUDED
23#include <opm/core/props/BlackoilPhases.hpp>
24#include <opm/simulators/wells/RegionAttributeHelpers.hpp>
25#include <opm/simulators/utils/DeferredLoggingErrorHelpers.hpp>
27#include <dune/grid/common/gridenums.hh>
28#include <dune/grid/common/rangegenerators.hh>
36#include <unordered_map>
51 namespace RegionAverageCalculator {
64 template <
class Flu
idSystem,
class Region>
78 , attr_ (rmap_, Attributes())
86 template <
typename ElementContext,
class EbosSimulator>
94 for (
const auto&
reg : rmap_.activeRegions()) {
100 attr_.insert(
reg, Attributes());
105 auto&
ra = attr_.attributes(
reg);
124 OPM_BEGIN_PARALLEL_TRY_CATCH();
127 elemCtx.updatePrimaryIntensiveQuantities(0);
138 const auto& pu = phaseUsage_;
140 hydrocarbon -=
fs.saturation(FluidSystem::waterPhaseIdx).value();
163 attr.pressure +=
fs.pressure(FluidSystem::oilPhaseIdx).value() *
pv_cell;
165 attr.pressure +=
fs.pressure(FluidSystem::gasPhaseIdx).value() *
pv_cell;
168 attr.pressure +=
fs.pressure(FluidSystem::waterPhaseIdx).value() *
pv_cell;
172 OPM_END_PARALLEL_TRY_CATCH(
"AverageRegionalPressure::defineState(): ",
simulator.vanguard().grid().comm());
175 auto&
ra = attr_.attributes(
reg);
213 for (
const auto&
attr : attr_.attributes()) {
214 const auto& value = *
attr.second;
215 const auto&
ra = value.attr_;
222 const auto&
ra = attr_.attributes(
r);
253 RegionAttributeHelpers::RegionAttributes<RegionId, Attributes> attr_;
Definition AquiferInterface.hpp:35
Computes hydrocarbon weighed average pressures over regions.
Definition RegionAverageCalculator.hpp:65
void defineState(const EbosSimulator &simulator)
Compute pore volume averaged hydrocarbon state pressure, *.
Definition RegionAverageCalculator.hpp:87
AverageRegionalPressure(const PhaseUsage &phaseUsage, const Region ®ion)
Constructor.
Definition RegionAverageCalculator.hpp:74
double pressure(const RegionId r) const
Average pressure.
Definition RegionAverageCalculator.hpp:207
RegionMapping< Region >::RegionId RegionId
Region identifier.
Definition RegionAverageCalculator.hpp:200
bool water(const PhaseUsage &pu)
Active water predicate.
Definition RegionAttributeHelpers.hpp:308
bool oil(const PhaseUsage &pu)
Active oil predicate.
Definition RegionAttributeHelpers.hpp:321
bool gas(const PhaseUsage &pu)
Active gas predicate.
Definition RegionAttributeHelpers.hpp:334
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition BlackoilPhases.hpp:27
PhaseUsage phaseUsage(const Phases &phases)
Determine the active phases.
Definition phaseUsageFromDeck.cpp:37
Definition BlackoilPhases.hpp:46