Suppot EQUIL + WATER + GAS

This commit is contained in:
Tor Harald Sandve
2022-12-12 13:39:00 +01:00
parent adda7e4a3c
commit 8d37ded703
7 changed files with 362 additions and 50 deletions

View File

@@ -0,0 +1,106 @@
NOECHO
RUNSPEC ======
OIL
GAS
CO2STORE
TABDIMS
1 1 40 20 1 20 /
DIMENS
1 1 20
/
WELLDIMS
30 10 2 30 /
START
1 'JAN' 1990 /
NSTACK
25 /
EQLDIMS
-- NTEQUL
1 /
FMTOUT
FMTIN
GRID ======
DXV
1.0
/
DYV
1.0
/
DZV
20*5.0
/
PORO
20*0.2
/
PERMZ
20*1.0
/
PERMY
20*100.0
/
PERMX
20*100.0
/
BOX
1 1 1 1 1 1 /
TOPS
0.0
/
PROPS ======
SGOF
0 0 1 0.1
0.9 1 0 0.5
/
ROCK
--RefPres Comp
1. 5.0E-5 /
SOLUTION ======
EQUIL
100 150 1000 1* 50 0.2 1* 1* 0
/
RPTSOL
'PRES' 'PGAS' 'SOIL' 'SGAS' 'RS' 'RESTART=2' /
SUMMARY ======
RUNSUM
SEPARATE
SCHEDULE ======
TSTEP
1 /
RPTSCHED
'PRES' 'PGAS' 'SOIL' 'SGAS' 'RS' 'RESTART=3' 'NEWTON=2' /
END

View File

@@ -0,0 +1,111 @@
NOECHO
RUNSPEC ======
WATER
GAS
CO2STORE
TABDIMS
1 1 40 20 1 20 /
DIMENS
1 1 20
/
WELLDIMS
30 10 2 30 /
START
1 'JAN' 1990 /
NSTACK
25 /
EQLDIMS
-- NTEQUL
1 /
FMTOUT
FMTIN
GRID ======
DXV
1.0
/
DYV
1.0
/
DZV
20*5.0
/
PORO
20*0.2
/
PERMZ
20*1.0
/
PERMY
20*100.0
/
PERMX
20*100.0
/
BOX
1 1 1 1 1 1 /
TOPS
0.0
/
PROPS ======
SWFN
0.1 0 0.5
1 1 0.1
/
SGFN
0 0 0.0
0.9 1 0.0
/
ROCK
--RefPres Comp
1. 5.0E-5 /
SOLUTION ======
EQUIL
100 150 50 0.2 1000 1* 1* 1* 0
/
RPTSOL
'PRES' 'PGAS' 'PWAT' 'SWAT' 'SGAS' 'RSW' 'RESTART=2' /
SUMMARY ======
RUNSUM
SEPARATE
SCHEDULE ======
TSTEP
1 /
RPTSCHED
'PRES' 'PGAS' 'PWAT' 'SWAT' 'SGAS' 'RSW' 'RESTART=3' 'NEWTON=2' /
END

View File

@@ -790,6 +790,49 @@ BOOST_AUTO_TEST_CASE(DeckWithLiveOil)
}
}
BOOST_AUTO_TEST_CASE(DeckWithCO2STORE)
{
using TypeTag = Opm::Properties::TTag::TestEquilTypeTag;
using FluidSystem = Opm::GetPropType<TypeTag, Opm::Properties::FluidSystem>;
auto simulator1 = initSimulator<TypeTag>("equil_co2store_go.DATA");
EquilFixture::Initializer comp_go(*simulator1->problem().materialLawManager(),
simulator1->vanguard().eclState(),
simulator1->vanguard().grid(),
simulator1->vanguard().gridView(),
simulator1->vanguard().cartesianMapper(), 9.80665);
auto simulator2 = initSimulator<TypeTag>("equil_co2store_gw.DATA");
EquilFixture::Initializer comp_gw(*simulator2->problem().materialLawManager(),
simulator2->vanguard().eclState(),
simulator2->vanguard().grid(),
simulator2->vanguard().gridView(),
simulator2->vanguard().cartesianMapper(), 9.80665);
Opm::GridManager gm(simulator2->vanguard().eclState().getInputGrid());
const UnstructuredGrid& grid = *(gm.c_grid());
const double reltol = 1.0e-5;
const auto& pressures_go = comp_go.press();
BOOST_REQUIRE_EQUAL(pressures_go.size(), 3U);
BOOST_REQUIRE_EQUAL(int(pressures_go[0].size()), grid.number_of_cells);
const auto& pressures_gw = comp_gw.press();
BOOST_REQUIRE_EQUAL(pressures_gw.size(), 3U);
BOOST_REQUIRE_EQUAL(int(pressures_gw[0].size()), grid.number_of_cells);
const auto& sats_go = comp_go.saturation();
const auto& sats_gw = comp_gw.saturation();
for (int i = 0; i < grid.number_of_cells; ++i) {
BOOST_CHECK_CLOSE(pressures_go[FluidSystem::gasPhaseIdx][i], pressures_gw[FluidSystem::gasPhaseIdx][i], reltol);
BOOST_CHECK_CLOSE(pressures_go[FluidSystem::oilPhaseIdx][i], pressures_gw[FluidSystem::waterPhaseIdx][i], reltol);
BOOST_CHECK_CLOSE(sats_go[FluidSystem::gasPhaseIdx][i], sats_gw[FluidSystem::gasPhaseIdx][i], reltol);
BOOST_CHECK_CLOSE(sats_go[FluidSystem::oilPhaseIdx][i], sats_gw[FluidSystem::waterPhaseIdx][i], reltol);
}
}
BOOST_AUTO_TEST_CASE(DeckWithWetGas)
{
using TypeTag = Opm::Properties::TTag::TestEquilTypeTag;