22#ifndef OPM_FLOWS_CONTAINER_HPP
23#define OPM_FLOWS_CONTAINER_HPP
25#include <opm/input/eclipse/EclipseState/Grid/FaceDir.hpp>
36namespace data {
class Solution; }
40template<
class Flu
idSystem>
43 using Scalar =
typename FluidSystem::Scalar;
44 using ScalarBuffer = std::vector<Scalar>;
46 static constexpr auto numPhases = FluidSystem::numPhases;
47 static constexpr auto gasPhaseIdx = FluidSystem::gasPhaseIdx;
48 static constexpr auto oilPhaseIdx = FluidSystem::oilPhaseIdx;
49 static constexpr auto waterPhaseIdx = FluidSystem::waterPhaseIdx;
51 static constexpr auto gasCompIdx = FluidSystem::gasCompIdx;
52 static constexpr auto oilCompIdx = FluidSystem::oilCompIdx;
53 static constexpr auto waterCompIdx = FluidSystem::waterCompIdx;
57 const SummaryConfig& summaryConfig);
60 const unsigned numOutputNnc,
61 const bool allocRestart,
62 std::map<std::string, int>& rstKeywords);
80 const std::array<FlowsData<double>, 3>&
getFlowsn()
const
81 {
return this->flowsn_; }
84 {
return enableFlowsn_; }
87 {
return enableFlows_; }
90 {
return blockFlows_; }
95 const std::array<FlowsData<double>, 3>&
getFloresn()
const
96 {
return this->floresn_; }
99 {
return enableFloresn_; }
102 {
return enableFlores_; }
105 {
return anyFlores_; }
108 const FaceDir::DirEnum dir,
109 const int comp_idx)
const
110 {
return flows_[comp_idx][FaceDir::ToIntersectionIndex(dir)][globalDofIdx]; }
113 bool anyFlows_{
false};
114 bool anyFlores_{
false};
115 bool blockFlows_{
false};
116 bool enableFlows_{
false};
117 bool enableFlores_{
false};
118 bool enableFlowsn_{
false};
119 bool enableFloresn_{
false};
121 std::array<std::array<ScalarBuffer, 6>, numPhases> flows_;
122 std::array<std::array<ScalarBuffer, 6>, numPhases> flores_;
124 std::array<FlowsData<double>, 3> floresn_;
125 std::array<FlowsData<double>, 3> flowsn_;
Definition: FlowsContainer.hpp:42
void outputRestart(data::Solution &sol)
bool anyFlores() const
Definition: FlowsContainer.hpp:104
bool hasFlores() const
Definition: FlowsContainer.hpp:101
FlowsContainer(const Schedule &schedule, const SummaryConfig &summaryConfig)
const std::array< FlowsData< double >, 3 > & getFloresn() const
Definition: FlowsContainer.hpp:95
bool hasFlowsn() const
Definition: FlowsContainer.hpp:83
void allocate(const std::size_t bufferSize, const unsigned numOutputNnc, const bool allocRestart, std::map< std::string, int > &rstKeywords)
Scalar getFlow(const unsigned globalDofIdx, const FaceDir::DirEnum dir, const int comp_idx) const
Definition: FlowsContainer.hpp:107
bool hasFloresn() const
Definition: FlowsContainer.hpp:98
bool hasFlows() const
Definition: FlowsContainer.hpp:86
const std::array< FlowsData< double >, 3 > & getFlowsn() const
Definition: FlowsContainer.hpp:80
bool hasBlockFlows() const
Definition: FlowsContainer.hpp:89
bool anyFlows() const
Definition: FlowsContainer.hpp:92
void assignFlores(const unsigned globalDofIdx, const int faceId, const unsigned nncId, const Scalar gas, const Scalar oil, const Scalar water)
void assignFlows(const unsigned globalDofIdx, const int faceId, const unsigned nncId, const Scalar gas, const Scalar oil, const Scalar water)
bool water(const PhaseUsage &pu)
Definition: RegionAttributeHelpers.hpp:309
bool oil(const PhaseUsage &pu)
Definition: RegionAttributeHelpers.hpp:322
bool gas(const PhaseUsage &pu)
Definition: RegionAttributeHelpers.hpp:335
Definition: blackoilboundaryratevector.hh:39