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()) {
95 attr_.insert(
reg, Attributes());
109 ElementContext elemCtx( simulator );
110 OPM_BEGIN_PARALLEL_TRY_CATCH();
111 for (
const auto&
elem :
elements(gridView, Dune::Partitions::interior)) {
112 elemCtx.updatePrimaryStencil(
elem);
113 elemCtx.updatePrimaryIntensiveQuantities(0);
114 const unsigned cellIdx = elemCtx.globalSpaceIndex(0, 0);
115 const auto& intQuants = elemCtx.intensiveQuantities(0, 0);
116 const auto& fs = intQuants.fluidState();
120 * intQuants.porosity().value();
124 const auto& pu = phaseUsage_;
126 hydrocarbon -= fs.saturation(FluidSystem::waterPhaseIdx).value();
149 attr.pressure += fs.pressure(FluidSystem::oilPhaseIdx).value() *
pv_cell;
151 attr.pressure += fs.pressure(FluidSystem::gasPhaseIdx).value() *
pv_cell;
154 attr.pressure += fs.pressure(FluidSystem::waterPhaseIdx).value() *
pv_cell;
158 OPM_END_PARALLEL_TRY_CATCH(
"AverageRegionalPressure::defineState(): ", simulator.
vanguard().grid().comm());
165 auto&
ra = attr_.attributes(
reg);
190 auto&
ra_field = attr_.attributes(0);
202 typedef typename RegionMapping<Region>::RegionId
RegionId;
211 const auto&
ra = attr_.attributes(
r);
241 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:202
Scalar pressure(const RegionId r) const
Average pressure.
Definition RegionAverageCalculator.hpp:209
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:273
const GridView & gridView() const
Return the grid view for which the simulation is done.
Definition simulator.hh:285
Model & model()
Return the physical model used in the simulation.
Definition simulator.hh:291
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