diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index fa4c39f6e..8f4bdf1f1 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -288,8 +288,7 @@ if(ENABLE_ECL_OUTPUT) tests/test_AggregateGroupData.cpp tests/test_AggregateMSWData.cpp tests/test_AggregateConnectionData.cpp - #tests/test_UDQ_x.cpp - #tests/test_UDQ_x_file.cpp + #tests/test_AggregateUDQData.cpp tests/test_ArrayDimChecker.cpp tests/test_EclipseIO.cpp tests/test_DoubHEAD.cpp diff --git a/src/opm/output/eclipse/DoubHEAD.cpp b/src/opm/output/eclipse/DoubHEAD.cpp index a4f60430a..4634db1bf 100755 --- a/src/opm/output/eclipse/DoubHEAD.cpp +++ b/src/opm/output/eclipse/DoubHEAD.cpp @@ -487,9 +487,11 @@ Opm::RestartIO::DoubHEAD::DoubHEAD() this->data_[Index::dh_210] = 0.0; this->data_[Index::dh_211] = 0.0; - this->data_[UdqPar_2] = 1.0E+20; + //this->data_[UdqPar_2] = 1.0E+20; + this->data_[UdqPar_2] = 0.0; this->data_[UdqPar_3] = 0.0; - this->data_[UdqPar_4] = 1.0e-4; + //this->data_[UdqPar_4] = 1.0e-4; + this->data_[UdqPar_4] = 0.0; this->data_[Index::dh_215] = -2.0e+20; this->data_[Index::dh_217] = 0.0; this->data_[Index::dh_218] = 0.0; diff --git a/tests/test_UDQ_x_file.cpp b/tests/test_AggregateUDQData.cpp similarity index 100% rename from tests/test_UDQ_x_file.cpp rename to tests/test_AggregateUDQData.cpp diff --git a/tests/test_UDQ_x.cpp b/tests/test_UDQ_x.cpp deleted file mode 100644 index cc239fd61..000000000 --- a/tests/test_UDQ_x.cpp +++ /dev/null @@ -1,524 +0,0 @@ -#define BOOST_TEST_MODULE UDQ_Data - -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -//#include -//#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -namespace { - Opm::Deck first_sim() - { - // Mostly copy of tests/FIRST_SIM.DATA - const std::string input = std::string { - R"~( -RUNSPEC - -TITLE -2 PRODUCERS AND INJECTORS, 2 WELL GROUPS AND ONE INTERMEDIATE GROUP LEVEL BELOW THE FIELD LEVEL - -DIMENS - 10 5 10 / - - -OIL - -WATER - -GAS - -DISGAS - -FIELD - -TABDIMS - 1 1 15 15 2 15 / - -EQLDIMS - 2 / - -WELLDIMS - 4 20 4 2 / - -UNIFIN -UNIFOUT - -FMTIN -FMTOUT --- Dimensions for used defined quantity facility --- max functions permitted in a quantity definition --- max arguments permitted in a quantity definition --- max user defined connection quantities --- max user defined field quantities --- max user defined group quantities --- max user defined region quantities --- max user defined segment quantities --- max user defined well quantities --- max user defined aquifer quantities --- max user defined block quantities --- whether new randon number generator seed computed for restart runs -UDQDIMS - 50 25 0 50 50 0 0 50 0 20 / - --- Dimensions for the user defined arguments facility --- number of keyword arguments in which UDQs replace numerical values --- ratained for back-compatibility --- total number of unique instances in which a UDQ is used in a keyword argument -UDADIMS - 10 1* 10 / - -START - 1 'JAN' 2015 / - --- RPTRUNSP - -GRID ========================================================= - ---NOGGF -BOX - 1 10 1 5 1 1 / - -TOPS -50*7000 / - -BOX -1 10 1 5 1 10 / - -DXV -10*100 / -DYV -5*100 / -DZV -2*20 100 7*20 / - -EQUALS --- 'DX' 100 / --- 'DY' 100 / - 'PERMX' 50 / - 'PERMZ' 5 / --- 'DZ' 20 / - 'PORO' 0.2 / --- 'TOPS' 7000 1 10 1 5 1 1 / --- 'DZ' 100 1 10 1 5 3 3 / --- 'PORO' 0.0 1 10 1 5 3 3 / - / - -COPY - PERMX PERMY / - / - -RPTGRID - -- Report Levels for Grid Section Data - -- - / - -PROPS ========================================================== - --- WATER RELATIVE PERMEABILITY AND CAPILLARY PRESSURE ARE TABULATED AS --- A FUNCTION OF WATER SATURATION. --- --- SWAT KRW PCOW -SWFN - - 0.12 0 0 - 1.0 0.00001 0 / - --- SIMILARLY FOR GAS --- --- SGAS KRG PCOG -SGFN - - 0 0 0 - 0.02 0 0 - 0.05 0.005 0 - 0.12 0.025 0 - 0.2 0.075 0 - 0.25 0.125 0 - 0.3 0.19 0 - 0.4 0.41 0 - 0.45 0.6 0 - 0.5 0.72 0 - 0.6 0.87 0 - 0.7 0.94 0 - 0.85 0.98 0 - 1.0 1.0 0 -/ - --- OIL RELATIVE PERMEABILITY IS TABULATED AGAINST OIL SATURATION --- FOR OIL-WATER AND OIL-GAS-CONNATE WATER CASES --- --- SOIL KROW KROG -SOF3 - - 0 0 0 - 0.18 0 0 - 0.28 0.0001 0.0001 - 0.38 0.001 0.001 - 0.43 0.01 0.01 - 0.48 0.021 0.021 - 0.58 0.09 0.09 - 0.63 0.2 0.2 - 0.68 0.35 0.35 - 0.76 0.7 0.7 - 0.83 0.98 0.98 - 0.86 0.997 0.997 - 0.879 1 1 - 0.88 1 1 / - - --- PVT PROPERTIES OF WATER --- --- REF. PRES. REF. FVF COMPRESSIBILITY REF VISCOSITY VISCOSIBILITY -PVTW - 4014.7 1.029 3.13D-6 0.31 0 / - --- ROCK COMPRESSIBILITY --- --- REF. PRES COMPRESSIBILITY -ROCK - 14.7 3.0D-6 / - --- SURFACE DENSITIES OF RESERVOIR FLUIDS --- --- OIL WATER GAS -DENSITY - 49.1 64.79 0.06054 / - --- PVT PROPERTIES OF DRY GAS (NO VAPOURISED OIL) --- WE WOULD USE PVTG TO SPECIFY THE PROPERTIES OF WET GAS --- --- PGAS BGAS VISGAS -PVDG - 14.7 166.666 0.008 - 264.7 12.093 0.0096 - 514.7 6.274 0.0112 - 1014.7 3.197 0.014 - 2014.7 1.614 0.0189 - 2514.7 1.294 0.0208 - 3014.7 1.080 0.0228 - 4014.7 0.811 0.0268 - 5014.7 0.649 0.0309 - 9014.7 0.386 0.047 / - --- PVT PROPERTIES OF LIVE OIL (WITH DISSOLVED GAS) --- WE WOULD USE PVDO TO SPECIFY THE PROPERTIES OF DEAD OIL --- --- FOR EACH VALUE OF RS THE SATURATION PRESSURE, FVF AND VISCOSITY --- ARE SPECIFIED. FOR RS=1.27 AND 1.618, THE FVF AND VISCOSITY OF --- UNDERSATURATED OIL ARE DEFINED AS A FUNCTION OF PRESSURE. DATA --- FOR UNDERSATURATED OIL MAY BE SUPPLIED FOR ANY RS, BUT MUST BE --- SUPPLIED FOR THE HIGHEST RS (1.618). --- --- RS POIL FVFO VISO -PVTO - 0.001 14.7 1.062 1.04 / - 0.0905 264.7 1.15 0.975 / - 0.18 514.7 1.207 0.91 / - 0.371 1014.7 1.295 0.83 / - 0.636 2014.7 1.435 0.695 / - 0.775 2514.7 1.5 0.641 / - 0.93 3014.7 1.565 0.594 / - 1.270 4014.7 1.695 0.51 - 5014.7 1.671 0.549 - 9014.7 1.579 0.74 / - 1.618 5014.7 1.827 0.449 - 9014.7 1.726 0.605 / -/ - - -RPTPROPS --- PROPS Reporting Options --- -/ - -REGIONS =========================================================== - - -FIPNUM - - 100*1 - 400*2 -/ - -EQLNUM - - 100*1 - 400*2 -/ - -RPTREGS - - / - -SOLUTION ============================================================ - -EQUIL - 7020.00 2700.00 7990.00 .00000 7020.00 .00000 0 0 5 / - 7200.00 3700.00 7300.00 .00000 7000.00 .00000 1 0 5 / - -RSVD 2 TABLES 3 NODES IN EACH FIELD 12:00 17 AUG 83 - 7000.0 1.0000 - 7990.0 1.0000 -/ - 7000.0 1.0000 - 7400.0 1.0000 -/ - -RPTRST --- Restart File Output Control --- -'BASIC=2' 'FLOWS' 'POT' 'PRES' / - - -SUMMARY =========================================================== - -FOPR - -WOPR - / - -FGPR - -FWPR - -FWIR - -FWCT - -FGOR - ---RUNSUM - -ALL - -MSUMLINS - -MSUMNEWT - -SEPARATE - -SCHEDULE =========================================================== - -DEBUG - 1 3 / - -DRSDT - 1.0E20 / - -RPTSCHED - 'PRES' 'SWAT' 'SGAS' 'RESTART=1' 'RS' 'WELLS=2' 'SUMMARY=2' - 'CPU=2' 'WELSPECS' 'NEWTON=2' / - -NOECHO - - -ECHO - -GRUPTREE - 'GRP1' 'FIELD' / - 'WGRP1' 'GRP1' / - 'WGRP2' 'GRP1' / -/ - -WELSPECS - 'PROD1' 'WGRP1' 1 5 7030 'OIL' 0.0 'STD' 'STOP' / - 'PROD2' 'WGRP2' 1 5 7030 'OIL' 0.0 'STD' 'STOP' / - 'WINJ1' 'WGRP1' 10 1 7030 'WAT' 0.0 'STD' 'STOP' / - 'WINJ2' 'WGRP2' 10 1 7030 'WAT' 0.0 'STD' 'STOP' / -/ - -COMPDAT - - 'PROD1' 1 5 2 2 3* 0.2 3* 'X' / - 'PROD1' 2 5 2 2 3* 0.2 3* 'X' / - 'PROD1' 3 5 2 2 3* 0.2 3* 'X' / - 'PROD2' 4 5 2 2 3* 0.2 3* 'X' / - 'PROD2' 5 5 2 2 3* 0.2 3* 'X' / - - 'WINJ1' 10 1 9 9 3* 0.2 3* 'X' / - 'WINJ1' 9 1 9 9 3* 0.2 3* 'X' / - 'WINJ1' 8 1 9 9 3* 0.2 3* 'X' / - 'WINJ2' 7 1 9 9 3* 0.2 3* 'X' / - 'WINJ2' 6 1 9 9 3* 0.2 3* 'X' / -/ - - - -UDQ --- test ---oil & liquid capacities at GEFAC = 0.8995 -DEFINE WUOPRL (WOPR PROD1 - 150) * 0.90 / -DEFINE WULPRL (WLPR PROD1 - 200) * 0.90 / -DEFINE WUOPRU (WOPR PROD2 - 250) * 0.80 / -DEFINE WULPRU (WLPR PROD2 - 300) * 0.80 / ---DEFINE GUOPRU (GOPR GRP1 - 100) * 0.70 / -DEFINE WUOPRL (WOPR PROD1 - 170) * 0.60 / --- units -UNITS WUOPRL SM3/DAY / -UNITS WULPRL SM3/DAY / -UNITS WUOPRU SM3/DAY / ---UNITS GUOPRU SM3/DAY / -UNITS WULPRU SM3/DAY / --- -/ - - ---GCONPROD ---'GRP1' 'FLD' -1 1* 1* 6000 'RATE' 'YES' 1* 'FORM' 7* / ---/ - --- Well production rate targets/limits: --- testing UDQs as production constrains -WCONPROD --- name status ctrl qo qw qg ql qr bhp thp vfp alq - 'PROD1' 'OPEN' 'GRUP' WUOPRL 1* 1* WULPRL 1* 60.0 / single wells --- 'PROD1' 'OPEN' 'GRUP' -2 1* 1* -3 1* 60.0 / single wells -/ - - -WCONPROD --- name status ctrl qo qw qg ql qr bhp thp vfp alq - 'PROD2' 'OPEN' 'GRUP' WUOPRU 1* 1* WULPRU 1* 60.0 / single wells --- 'PROD1' 'OPEN' 'LRAT' 3* 1200 1* 2500 1* / --- 'PROD2' 'OPEN' 'LRAT' 3* 800 1* 2500 1* / - / - -WCONINJE - 'WINJ1' 'WAT' 'OPEN' 'BHP' 1* 1200 3500 1* / - 'WINJ2' 'WAT' 'OPEN' 'BHP' 1* 800 3500 1* / - / - - -TUNING - / - / - / - -TSTEP - 4 -/ - - -END - -)~" }; - - return Opm::Parser{}.parseString(input); - } - - Opm::UDQActive udq_active() { - int update_count = 0; - // construct record data for udq_active - Opm::UDQParams params; - Opm::UDQConfig conf(params); - Opm::UDQActive udq_act; - Opm::UDAValue uda1("WUOPRL"); - update_count += udq_act.update(conf, uda1, "PROD1", Opm::UDAControl::WCONPROD_ORAT); - - Opm::UDAValue uda2("WULPRL"); - update_count += udq_act.update(conf, uda2, "PROD1", Opm::UDAControl::WCONPROD_LRAT); - Opm::UDAValue uda3("WUOPRU"); - update_count += udq_act.update(conf, uda3, "PROD2", Opm::UDAControl::WCONPROD_ORAT); - Opm::UDAValue uda4("WULPRU"); - update_count += udq_act.update(conf, uda4, "PROD2", Opm::UDAControl::WCONPROD_LRAT); - - for (std::size_t index=0; index < udq_act.IUAD_size(); index++) - { - const auto & record = udq_act[index]; - auto ind = record.input_index; - auto udq_key = record.udq; - auto name = record.wgname; - auto ctrl_type = record.control; - } - return udq_act; - } - -} - - -//int main(int argc, char* argv[]) -struct SimulationCase -{ - explicit SimulationCase(const Opm::Deck& deck) - : es { deck } - , grid { deck } - , sched{ deck, es } - {} - - // Order requirement: 'es' must be declared/initialised before 'sched'. - Opm::EclipseState es; - Opm::EclipseGrid grid; - Opm::Schedule sched; - -}; - -BOOST_AUTO_TEST_SUITE(Aggregate_UDQ) - - -// test dimensions of multisegment data -BOOST_AUTO_TEST_CASE (Constructor) -{ - const auto simCase = SimulationCase{first_sim()}; - - Opm::EclipseState es = simCase.es; - Opm::Schedule sched = simCase.sched; - Opm::EclipseGrid grid = simCase.grid; - const auto& ioConfig = es.getIOConfig(); - const auto& restart = es.cfg().restart(); - // Report Step 1: 2008-10-10 --> 2011-01-20 - const auto rptStep = std::size_t{1}; - - std::string outputDir = "./"; - std::string baseName = "TEST_UDQRST"; - Opm::EclIO::OutputStream::Restart rstFile { - Opm::EclIO::OutputStream::ResultSet { outputDir, baseName }, - rptStep, - Opm::EclIO::OutputStream::Formatted { ioConfig.getFMTOUT() }, - Opm::EclIO::OutputStream::Unified { ioConfig.getUNIFOUT() } - }; - - double secs_elapsed = 3.1536E07; - const auto ih = Opm::RestartIO::Helpers::createInteHead(es, grid, sched, - secs_elapsed, rptStep, rptStep); - - const auto udqDims = Opm::RestartIO::Helpers::createUdqDims(sched, rptStep, ih); - auto udqData = Opm::RestartIO::Helpers::AggregateUDQData(udqDims); - udqData.captureDeclaredUDQData(sched, rptStep, ih); - - rstFile.write("IUDQ", udqData.getIUDQ()); - rstFile.write("IUAD", udqData.getIUAD()); - rstFile.write("ZUDN", udqData.getZUDN()); - rstFile.write("ZUDL", udqData.getZUDL()); - - } - -BOOST_AUTO_TEST_SUITE_END()