mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Moved water phase check outside loop
This commit is contained in:
parent
8b6a504874
commit
b84837fc61
@ -1659,6 +1659,13 @@ applyNumericalAquifers_(const GridView& gridView,
|
|||||||
const auto num_aqu_cells = aquifer.allAquiferCells();
|
const auto num_aqu_cells = aquifer.allAquiferCells();
|
||||||
if (num_aqu_cells.empty()) return;
|
if (num_aqu_cells.empty()) return;
|
||||||
|
|
||||||
|
// Check if water phase is active, or in the case of CO2STORE and H2STORE, water is modelled as oil phase
|
||||||
|
bool oil_as_brine = co2store_or_h2store && FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx);
|
||||||
|
const auto watPos = oil_as_brine? FluidSystem::oilPhaseIdx : FluidSystem::waterPhaseIdx;
|
||||||
|
if (!FluidSystem::phaseIsActive(watPos)){
|
||||||
|
throw std::logic_error { "Water phase has to be active for numerical aquifer case" };
|
||||||
|
}
|
||||||
|
|
||||||
ElementMapper elemMapper(gridView, Dune::mcmgElementLayout());
|
ElementMapper elemMapper(gridView, Dune::mcmgElementLayout());
|
||||||
auto elemIt = gridView.template begin</*codim=*/0>();
|
auto elemIt = gridView.template begin</*codim=*/0>();
|
||||||
const auto& elemEndIt = gridView.template end</*codim=*/0>();
|
const auto& elemEndIt = gridView.template end</*codim=*/0>();
|
||||||
@ -1669,13 +1676,8 @@ applyNumericalAquifers_(const GridView& gridView,
|
|||||||
const auto search = num_aqu_cells.find(cartIx);
|
const auto search = num_aqu_cells.find(cartIx);
|
||||||
if (search != num_aqu_cells.end()) {
|
if (search != num_aqu_cells.end()) {
|
||||||
// numerical aquifer cells are filled with water initially
|
// numerical aquifer cells are filled with water initially
|
||||||
// for co2store and h2store the oil phase may be used for the brine
|
|
||||||
bool oil_as_brine = co2store_or_h2store && FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx);
|
|
||||||
const auto watPos = oil_as_brine? FluidSystem::oilPhaseIdx : FluidSystem::waterPhaseIdx;
|
|
||||||
if (FluidSystem::phaseIsActive(watPos)) {
|
if (FluidSystem::phaseIsActive(watPos)) {
|
||||||
this->sat_[watPos][elemIdx] = 1.;
|
this->sat_[watPos][elemIdx] = 1.;
|
||||||
} else {
|
|
||||||
throw std::logic_error { "Water phase has to be active for numerical aquifer case" };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto oilPos = FluidSystem::oilPhaseIdx;
|
const auto oilPos = FluidSystem::oilPhaseIdx;
|
||||||
|
@ -80,7 +80,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
bool co2store_or_h2store_() const
|
bool co2store_or_h2store_() const
|
||||||
{
|
{
|
||||||
return ebos_simulator_.vanguard().eclState().runspec().co2Storage() || ebos_simulator_.vanguard().eclState().runspec().h2Storage();
|
const auto& rspec = ebos_simulator_.vanguard().eclState().runspec();
|
||||||
|
return rspec.co2Storage() || rspec.h2Storage();
|
||||||
}
|
}
|
||||||
|
|
||||||
int phaseIdx_() const
|
int phaseIdx_() const
|
||||||
|
Loading…
Reference in New Issue
Block a user