WIP removed additional code that altered DoubHEAD data

This commit is contained in:
Jostein Alvestad
2019-08-12 12:57:29 +02:00
parent d6d1dbd38b
commit a3f74c19c4
4 changed files with 5 additions and 528 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -1,524 +0,0 @@
#define BOOST_TEST_MODULE UDQ_Data
#include <boost/test/unit_test.hpp>
#include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Well2.hpp>
#include <opm/parser/eclipse/Parser/Parser.hpp>
#include <opm/parser/eclipse/Deck/Deck.hpp>
#include <opm/output/eclipse/AggregateUDQData.hpp>
#include <opm/output/eclipse/WriteRestartHelpers.hpp>
#include <opm/output/eclipse/InteHEAD.hpp>
#include <opm/output/eclipse/VectorItems/intehead.hpp>
#include <opm/output/eclipse/DoubHEAD.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQInput.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQActive.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQConfig.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/UDQ/UDQParams.hpp>
//#include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
//#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
#include <opm/parser/eclipse/Units/UnitSystem.hpp>
#include <opm/parser/eclipse/Units/Units.hpp>
#include <opm/io/eclipse/OutputStream.hpp>
#include <stdexcept>
#include <utility>
#include <exception>
#include <iostream>
#include <string>
#include <vector>
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()