20#ifndef OPM_REGIONAVERAGECALCULATOR_HPP_HEADER_INCLUDED
21#define OPM_REGIONAVERAGECALCULATOR_HPP_HEADER_INCLUDED
23#include <opm/simulators/wells/RegionAttributeHelpers.hpp>
25#include <opm/simulators/utils/BlackoilPhases.hpp>
26#include <opm/simulators/utils/DeferredLoggingErrorHelpers.hpp>
28#include <dune/grid/common/gridenums.hh>
29#include <dune/grid/common/rangegenerators.hh>
33#include <unordered_map>
46 namespace RegionAverageCalculator {
59 template <
class Flu
idSystem,
class Region>
62 using Scalar =
typename FluidSystem::Scalar;
74 , attr_ (rmap_, Attributes())
82 template <
typename ElementContext,
class Simulator>
86 const auto& gridView = simulator.
gridView();
87 const auto& comm = gridView.comm();
88 for (
const auto&
reg : rmap_.activeRegions()) {
94 attr_.insert(
reg, Attributes());
99 auto&
ra = attr_.attributes(
reg);
116 ElementContext
elemCtx( simulator );
118 OPM_BEGIN_PARALLEL_TRY_CATCH();
119 for (
const auto&
elem :
elements(gridView, Dune::Partitions::interior)) {
121 elemCtx.updatePrimaryIntensiveQuantities(0);
132 const auto& pu = phaseUsage_;
134 hydrocarbon -=
fs.saturation(FluidSystem::waterPhaseIdx).value();
157 attr.pressure +=
fs.pressure(FluidSystem::oilPhaseIdx).value() *
pv_cell;
159 attr.pressure +=
fs.pressure(FluidSystem::gasPhaseIdx).value() *
pv_cell;
162 attr.pressure +=
fs.pressure(FluidSystem::waterPhaseIdx).value() *
pv_cell;
166 OPM_END_PARALLEL_TRY_CATCH(
"AverageRegionalPressure::defineState(): ", simulator.
vanguard().grid().comm());
169 auto&
ra = attr_.attributes(
reg);
194 typedef typename RegionMapping<Region>::RegionId
RegionId;
207 for (
const auto&
attr : attr_.attributes()) {
208 const auto& value = *
attr.second;
209 const auto&
ra = value.attr_;
216 const auto&
ra = attr_.attributes(
r);
246 RegionAttributeHelpers::RegionAttributes<RegionId, Attributes> attr_;
Computes hydrocarbon weighed average pressures over regions.
Definition RegionAverageCalculator.hpp:60
AverageRegionalPressure(const PhaseUsage &phaseUsage, const Region ®ion)
Constructor.
Definition RegionAverageCalculator.hpp:70
void defineState(const Simulator &simulator)
Compute pore volume averaged hydrocarbon state pressure.
Definition RegionAverageCalculator.hpp:83
RegionMapping< Region >::RegionId RegionId
Region identifier.
Definition RegionAverageCalculator.hpp:194
Scalar pressure(const RegionId r) const
Average pressure.
Definition RegionAverageCalculator.hpp:201
Manages the initializing and running of time dependent problems.
Definition simulator.hh:92
Vanguard & vanguard()
Return a reference to the grid manager of simulation.
Definition simulator.hh:260
const GridView & gridView() const
Return the grid view for which the simulation is done.
Definition simulator.hh:272
Model & model()
Return the physical model used in the simulation.
Definition simulator.hh:278
bool water(const PhaseUsage &pu)
Active water predicate.
Definition RegionAttributeHelpers.hpp:309
bool oil(const PhaseUsage &pu)
Active oil predicate.
Definition RegionAttributeHelpers.hpp:322
bool gas(const PhaseUsage &pu)
Active gas predicate.
Definition RegionAttributeHelpers.hpp:335
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilboundaryratevector.hh:37
PhaseUsage phaseUsage(const Phases &phases)
Determine the active phases.
Definition phaseUsageFromDeck.cpp:37
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:242
Definition BlackoilPhases.hpp:46