From 77b9311f2c810b24fc2614a86a8fdaa932e3dad6 Mon Sep 17 00:00:00 2001 From: Tor Harald Sandve Date: Wed, 22 Mar 2017 10:07:56 +0100 Subject: [PATCH] FIX swatinit test in test_equil The capillarySwatinit.DATA is updated to make it possible to run in Ecl. Referance solutions is updated accordingly. --- tests/capillarySwatinit.DATA | 34 ++++++++++++++++------ tests/test_equil.cpp | 56 ++++++++++++++++++++---------------- 2 files changed, 57 insertions(+), 33 deletions(-) diff --git a/tests/capillarySwatinit.DATA b/tests/capillarySwatinit.DATA index d7592bbc..f4e693a5 100644 --- a/tests/capillarySwatinit.DATA +++ b/tests/capillarySwatinit.DATA @@ -11,15 +11,17 @@ OIL GAS DIMENS -40 40 40 / +1 1 20 / TABDIMS 1 1 40 20 1 20 / - + EQLDIMS -- NTEQUL 1 / +START + 1 'JAN' 2015 / ------------------------------------- GRID @@ -27,20 +29,31 @@ GRID -- specify a fake one... DXV -40*1 / +1 / DYV -40*1 / +1 / -DZV -40*1 / +DZ +20*5 / -DEPTHZ -1681*123.456 / +TOPS +0 / +PORO +20*0.3 / + +PERMX +20*500 / + +PERMZ +20*500 / ------------------------------------- PROPS +ROCK + 14.7 3E-6 / + PVDO 100 1.0 1.0 200 0.9 1.0 @@ -72,7 +85,7 @@ DENSITY SWATINIT 5*0 10*0.5 - 5*1 / +5*1 / ------------------------------------- SOLUTION @@ -81,6 +94,9 @@ EQUIL 50 150 50 0.25 20 0.35 1* 1* 0 / +RPTSOL + SWATINIT SWAT SGAS SOIL PCOG PCOW +/ ------------------------------------- SCHEDULE -- empty section diff --git a/tests/test_equil.cpp b/tests/test_equil.cpp index ac6373fb..ae8cf320 100644 --- a/tests/test_equil.cpp +++ b/tests/test_equil.cpp @@ -815,26 +815,29 @@ Test disabled by Joakim 21.03.2017 to recover green test chain. BOOST_AUTO_TEST_CASE (DeckWithSwatinit) { - Opm::GridManager gm(1, 1, 20, 1.0, 1.0, 5.0); - const UnstructuredGrid& grid = *(gm.c_grid()); + //Opm::GridManager gm(1, 1, 20, 1.0, 1.0, 5.0); Opm::Parser parser; Opm::ParseContext parseContext; Opm::Deck deck = parser.parseFile("capillarySwatinit.DATA" , parseContext); Opm::EclipseState eclipseState(deck , parseContext); + Opm::GridManager gm(eclipseState.getInputGrid()); + const UnstructuredGrid& grid = *(gm.c_grid()); Opm::BlackoilPropertiesFromDeck props(deck, eclipseState, grid, false); + Opm::BlackoilPropertiesFromDeck propsScaled(deck, eclipseState, grid, false); + Opm::BlackoilState state( Opm::UgGridHelpers::numCells( grid ) , Opm::UgGridHelpers::numFaces( grid ) , 3); // reference saturations const std::vector s[3]{ - { 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.42192000000000002, 0.77802666666666664, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, - { 0, 0, 0, 0.00736, 0.792746666666, 0.8, 0.8, 0.8, 0.8, 0.57807999999999993, 0.22197333333333336, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0.8, 0.8, 0.8, 0.79264, 0.007253333333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.425307, 0.77464, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + { 0, 0, 0, 0.0148267, 0.78528, 0.8, 0.8, 0.8, 0.8, 0.574693, 0.22536, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0.8, 0.8, 0.8, 0.785173, 0.01472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; // sw in cell 13 and 14 is forced to be swu=1 since P_oil - P_wat < 0. const std::vector swatinit[3]{ { 0.2, 0.2, 0.2, 0.2, 0.2, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 1 }, - { 0, 0, 0, 0.00736, 0.792746666666, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0.8, 0.8, 0.8, 0.79264, 0.007253333333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0.0148267, 0.78528, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0.8, 0.8, 0.8, 0.785173, 0.01472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; std::vector sats = state.saturation(); for (int phase = 0; phase < 3; ++phase) { @@ -842,6 +845,13 @@ BOOST_AUTO_TEST_CASE (DeckWithSwatinit) sats[3*i + phase] = s[phase][i]; } } + std::vector sats_swatinit = state.saturation(); + for (int phase = 0; phase < 3; ++phase) { + for (size_t i = 0; i < 20; ++i) { + sats_swatinit[3*i + phase] = swatinit[phase][i]; + } + } + // reference pcs const int numCells = Opm::UgGridHelpers::numCells(grid); std::vector cells(numCells); @@ -850,38 +860,36 @@ BOOST_AUTO_TEST_CASE (DeckWithSwatinit) props.capPress(numCells, sats.data(), cells.data(), pc_original.data(), nullptr); std::vector pc_scaled_truth = pc_original; - // only modify pcow - // sw = 0.2 - for (size_t i = 0; i < 5; ++i) { - pc_scaled_truth[3*i + 0] = 40000; - } - // sw = 0.5 - for (size_t i = 5; i < 12; ++i) { - pc_scaled_truth[3*i + 0] = 28750; - } - // sw = 1 - for (size_t i = 12; i < 20; ++i) { - pc_scaled_truth[3*i + 0] = 10000; - } + + // modify pcow for cell 5 - 11 (where sw is changed due to swatinit) + // for the reference scaled pc. + pc_scaled_truth[3*5 + 0] = 84081; + pc_scaled_truth[3*6 + 0] = 70929; + pc_scaled_truth[3*7 + 0] = 57791; + pc_scaled_truth[3*8 + 0] = 44665; + pc_scaled_truth[3*9 + 0] = 31552; + pc_scaled_truth[3*10 + 0] = 18451.5; + pc_scaled_truth[3*11 + 0] = 5364.1; + // compute the initial state // apply swatinit Opm::BlackoilState state_scaled = state; - initStateEquil(grid, props, deck, eclipseState, 10.0, state_scaled, true); + initStateEquil(grid, propsScaled, deck, eclipseState, 9.81, state_scaled, true); // don't apply swatinit Opm::BlackoilState state_unscaled = state; - initStateEquil(grid, props, deck, eclipseState, 10.0, state_unscaled, false); + initStateEquil(grid, props, deck, eclipseState, 9.81, state_unscaled, false); // compute pc std::vector pc_scaled= state.saturation(); - props.capPress(numCells, state_scaled.saturation().data(), cells.data(), pc_scaled.data(), nullptr); + propsScaled.capPress(numCells, state_scaled.saturation().data(), cells.data(), pc_scaled.data(), nullptr); std::vector pc_unscaled= state.saturation(); props.capPress(numCells, state_unscaled.saturation().data(), cells.data(), pc_unscaled.data(), nullptr); // test - const double reltol = 1.0e-6; + const double reltol = 1.0e-3; for (int phase = 0; phase < 3; ++phase) { for (size_t i = 0; i < 20; ++i) { CHECK( pc_original[3*i + phase ], pc_unscaled[3*i + phase ], reltol);