Add Numeric Aquifer Restart Output

This commit generates the IAQN and RAQN restart vectors pertaining
to numeric aquifers.  The arrays are sized according to the number
of records in the input AQUNUM keyword.  RAQN is a mix of static and
dynamic information, including the cumulative total inflow volume of
water from the aquifer into the model.  IAQN is exclusively static
information.

We add new members to 'AggregateAquiferData' and ensure that the
numeric aquifer arrays remain empty when no numeric aquifers exist
in the model.  Add unit tests for these new arrays and update
existing unit tests to account for new dimension items.
This commit is contained in:
Bård Skaflestad
2021-05-19 23:07:05 +02:00
parent 8c33979071
commit 6c1c753764
8 changed files with 381 additions and 35 deletions

View File

@@ -316,7 +316,20 @@ BOOST_AUTO_TEST_CASE(Analytic_Aquifer_Parameters)
{
// https://oeis.org/A001622
const auto aqudims = Opm::RestartIO::InteHEAD::AquiferDims {
1, 61, 803, 3988, 74989, 484820, 45868, 3436, 563, 81, 1177203
1, // numAquifers
61, // maxNumAquifers
803, // maxNumAquiferConn
3988, // maxNumActiveAquiferConn
74989, // maxAquiferID
484820, // numNumericAquiferRecords
45868, // numIntAquiferElem
3436, // numRealAquiferElem
563, // numDoubAquiferElem
81, // numNumericAquiferIntElem
17, // numNumericAquiferDoubleElem
720, // numIntConnElem
30, // numRealConnElem
9, // numDoubConnElem
};
const auto ih = Opm::RestartIO::InteHEAD{}
@@ -326,17 +339,21 @@ BOOST_AUTO_TEST_CASE(Analytic_Aquifer_Parameters)
BOOST_CHECK_EQUAL(v[VI::intehead::NAQUIF], 1);
BOOST_CHECK_EQUAL(v[VI::intehead::NCAMAX], 803);
BOOST_CHECK_EQUAL(v[VI::intehead::NIAAQZ], 484820);
BOOST_CHECK_EQUAL(v[VI::intehead::NSAAQZ], 45868);
BOOST_CHECK_EQUAL(v[VI::intehead::NXAAQZ], 3436);
BOOST_CHECK_EQUAL(v[VI::intehead::NICAQZ], 563);
BOOST_CHECK_EQUAL(v[VI::intehead::NSCAQZ], 81);
BOOST_CHECK_EQUAL(v[VI::intehead::NACAQZ], 1177203);
BOOST_CHECK_EQUAL(v[VI::intehead::NIAAQZ], 45868);
BOOST_CHECK_EQUAL(v[VI::intehead::NSAAQZ], 3436);
BOOST_CHECK_EQUAL(v[VI::intehead::NXAAQZ], 563);
BOOST_CHECK_EQUAL(v[VI::intehead::NICAQZ], 720);
BOOST_CHECK_EQUAL(v[VI::intehead::NSCAQZ], 30);
BOOST_CHECK_EQUAL(v[VI::intehead::NACAQZ], 9);
BOOST_CHECK_EQUAL(v[VI::intehead::MAX_ACT_ANLYTIC_AQUCONN], 3988);
BOOST_CHECK_EQUAL(v[VI::intehead::MAX_AN_AQUIFER_ID], 74989);
BOOST_CHECK_EQUAL(v[VI::intehead::AQU_UNKNOWN_1], 1);
BOOST_CHECK_EQUAL(v[VI::intehead::MAX_ANALYTIC_AQUIFERS], 61);
BOOST_CHECK_EQUAL(v[VI::intehead::NIIAQN], 81);
BOOST_CHECK_EQUAL(v[VI::intehead::NIRAQN], 17);
BOOST_CHECK_EQUAL(v[VI::intehead::NUM_AQUNUM_RECORDS], 484820);
}
BOOST_AUTO_TEST_CASE(Time_and_report_step)
@@ -564,6 +581,9 @@ BOOST_AUTO_TEST_CASE(TestHeader) {
const auto nicaqz = 111111;
const auto nscaqz = 1111111;
const auto nacaqz = 11111111;
const auto niiaqn = 22222222;
const auto niraqn = 2222222;
const auto numaqn = 222222;
const auto tstep = 78;
const auto report_step = 12;
const auto newtmx = 17;
@@ -586,7 +606,10 @@ BOOST_AUTO_TEST_CASE(TestHeader) {
const auto ngroup = 8;
const auto aqudims = Opm::RestartIO::InteHEAD::AquiferDims {
1, 61, ncamax, 3988, 74989, niaaqz, nsaaqz, nxaaqz, nicaqz, nscaqz, nacaqz
1, 61, ncamax, 3988, 74989,
numaqn, niaaqz, nsaaqz, nxaaqz,
niiaqn, niraqn,
nicaqz, nscaqz, nacaqz
};
auto unit_system = Opm::UnitSystem::newMETRIC();