Centralise Aquifer Dimension Handling in INTEHEAD
This commit switches the INTEHEAD factory function to passing dimensions related to aquifers by means of the 'AquiferDims' structure. While here, also update description and names of a few aquifer-related INTEHEAD items to reflect more recent understanding.
This commit is contained in:
@@ -26,12 +26,15 @@
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
|
||||
namespace Opm {
|
||||
|
||||
class EclipseGrid;
|
||||
class EclipseState;
|
||||
class UnitSystem;
|
||||
|
||||
namespace RestartIO {
|
||||
}
|
||||
|
||||
namespace Opm { namespace RestartIO {
|
||||
|
||||
class InteHEAD
|
||||
{
|
||||
@@ -185,13 +188,16 @@ namespace RestartIO {
|
||||
|
||||
InteHEAD& unitConventions(const UnitSystem& usys);
|
||||
InteHEAD& wellTableDimensions(const WellTableDim& wtdim);
|
||||
InteHEAD& aquiferDimensions(const AquiferDims& aqudims);
|
||||
|
||||
InteHEAD& calendarDate(const TimePoint& date);
|
||||
InteHEAD& activePhases(const Phases& phases);
|
||||
|
||||
InteHEAD& params_NWELZ(const int niwelz, const int nswelz, const int nxwelz, const int nzwelz);
|
||||
InteHEAD& params_NCON(const int niconz, const int nsconz, const int nxconz);
|
||||
InteHEAD& params_GRPZ(const std::array<int, 4>& grpz);
|
||||
InteHEAD& params_NGCTRL(const int gct);
|
||||
InteHEAD& params_NAAQZ(const int ncamax, const int niaaqz, const int nsaaqz, const int nxaaqz, const int nicaqz, const int nscaqz, const int nacaqz);
|
||||
|
||||
InteHEAD& stepParam(const int tstep, const int report_step);
|
||||
InteHEAD& tuningParam(const TuningPar& tunpar);
|
||||
InteHEAD& variousParam(const int version, const int iprog);
|
||||
@@ -216,11 +222,12 @@ namespace RestartIO {
|
||||
std::vector<int> data_;
|
||||
};
|
||||
|
||||
std::time_t makeUTCTime(const std::tm& timePoint);
|
||||
|
||||
InteHEAD::TimePoint
|
||||
getSimulationTimePoint(const std::time_t start,
|
||||
const double elapsed);
|
||||
|
||||
InteHEAD::AquiferDims
|
||||
inferAquiferDimensions(const EclipseState& es);
|
||||
}} // Opm::RestartIO
|
||||
|
||||
#endif // OPM_INTEHEAD_HEADER_INCLUDED
|
||||
|
||||
@@ -69,6 +69,7 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
|
||||
NXGRPZ = 38, // Number of data elements per group in XGRP array
|
||||
NZGRPZ = 39, // Number of data elements per group in ZGRP array
|
||||
|
||||
NAQUIF = 40, // Number of *active* analytic aquifers (i.e., number of unique aquifer IDs) in model
|
||||
NCAMAX = 41, // Maximum number of analytic aquifer connections
|
||||
|
||||
NIAAQZ = 42, // Number of data elements per aquifer in IAAQ array
|
||||
@@ -123,6 +124,7 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
|
||||
MAXNOLINES = 157, // Maximum number of lines of schedule data for ACTION keyword - including ENDACTIO
|
||||
MAXNOSTRPRLINE = 158, // Maximum number of 8-chars strings pr input line of Action data (rounded up from input)
|
||||
|
||||
MAX_ACT_ANLYTIC_AQUCONN = 162, // Maximum number of *active* connections across all analytic aquifers
|
||||
NWMAXZ = 163, // Maximum number of wells in the model
|
||||
|
||||
NSEGWL = 174, // Number of multisegment wells defined with WELSEG
|
||||
@@ -140,12 +142,16 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
|
||||
WSEGITR_IT2 = 208, // NR - maximum no of times that a new iteration cycle with a reduced Wp will be started
|
||||
|
||||
MAX_ACT_COND = 245, // Maximum number of conditions pr action
|
||||
MAX_AN_AQUIFERS = 252, // Maximum number of analytic aquifers
|
||||
MAX_AN_AQUIFER_ID = 252, // Maximum aquifer ID of all analytic aquifers (<= AQUDIMS(5))
|
||||
|
||||
NO_FIELD_UDQS = 262, // No of Field UDQ data (parameters) /
|
||||
NO_GROUP_UDQS = 263, // No of Group UDQ data (parameters) /
|
||||
NO_WELL_UDQS = 266, // No of Well UDQ data (parameters) /
|
||||
UDQPAR_1 = 267, // Integer seed value for the RAND /
|
||||
|
||||
AQU_UNKNOWN_1 = 269, // Not characterised. Equal to NAQUIF in all cases seen so far.
|
||||
MAX_ANALYTIC_AQUIFERS = 286, // Declared maximum number of analytic aquifers in model. AQUDIMS(5).
|
||||
|
||||
NO_IUADS = 290, // No IUADs
|
||||
NO_IUAPS = 291, // No IUAPs
|
||||
RSEED = 296,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2021 Equinor ASA
|
||||
Copyright (c) 2018 Statoil ASA
|
||||
|
||||
This file is part of the Open Porous Media project (OPM).
|
||||
@@ -21,6 +22,7 @@
|
||||
|
||||
#include <opm/output/eclipse/InteHEAD.hpp>
|
||||
|
||||
#include <opm/parser/eclipse/EclipseState/Aquifer/AquiferConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Runspec.hpp>
|
||||
@@ -284,7 +286,6 @@ namespace {
|
||||
}};
|
||||
}
|
||||
|
||||
|
||||
Opm::RestartIO::InteHEAD::Phases
|
||||
getActivePhases(const ::Opm::Runspec& rspec)
|
||||
{
|
||||
@@ -542,10 +543,7 @@ createInteHead(const EclipseState& es,
|
||||
.params_NWELZ (155, 122, 130, 3) // n{isxz}welz: number of data elements per well in {ISXZ}WELL
|
||||
.params_NCON (25, 41, 58) // n{isx}conz: number of data elements per completion in ICON
|
||||
.params_GRPZ (getNGRPZ(nwgmax, ngmax, rspec))
|
||||
// ncamax: max number of analytical aquifer connections
|
||||
// n{isx}aaqz: number of data elements per aquifer in {ISX}AAQ
|
||||
// n{isa}caqz: number of data elements per aquifer connection in {ISA}CAQ
|
||||
.params_NAAQZ (1, 18, 24, 10, 7, 2, 4)
|
||||
.aquiferDimensions (inferAquiferDimensions(es))
|
||||
.stepParam (num_solver_steps, report_step)
|
||||
.tuningParam (getTuningPars(sched[lookup_step].tuning()))
|
||||
.liftOptParam (getLiftOptPar(sched, lookup_step))
|
||||
|
||||
@@ -1,13 +1,40 @@
|
||||
/*
|
||||
Copyright 2021 Equinor ASA.
|
||||
Copyright 2016, 2017, 2018 Statoil ASA.
|
||||
|
||||
This file is part of the Open Porous Media Project (OPM).
|
||||
|
||||
OPM is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OPM is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <opm/output/eclipse/InteHEAD.hpp>
|
||||
|
||||
#include <opm/output/eclipse/VectorItems/intehead.hpp>
|
||||
|
||||
#include <opm/parser/eclipse/EclipseState/Aquifer/AquiferConfig.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Aquifer/Aquancon.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
|
||||
#include <opm/parser/eclipse/Units/UnitSystem.hpp>
|
||||
|
||||
#include <opm/common/utility/TimeService.hpp>
|
||||
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <cmath>
|
||||
#include <ctime>
|
||||
#include <numeric>
|
||||
#include <ratio>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
@@ -61,7 +88,7 @@ enum index : std::vector<int>::size_type {
|
||||
NSGRPZ = VI::intehead::NSGRPZ, // 112 0 112 NSGRPZ = number of data elements per group in SGRP array
|
||||
NXGRPZ = VI::intehead::NXGRPZ, // 180 0 180 NXGRPZ = number of data elements per group in XGRP array
|
||||
NZGRPZ = VI::intehead::NZGRPZ, // 5 0 NZGRPZ = number of data elements per group in ZGRP array
|
||||
ih_040 = 40 , // 0 0
|
||||
NAQUIF = VI::intehead::NAQUIF, // 0 0 NAQUIF = number of analytic aquifers in model
|
||||
NCAMAX = VI::intehead::NCAMAX, // 1 0 NCAMAX = maximum number of analytic aquifer connections
|
||||
NIAAQZ = VI::intehead::NIAAQZ, // 18 0 NIAAQZ = number of data elements per aquifer in IAAQ array
|
||||
NSAAQZ = VI::intehead::NSAAQZ, // 24 0 NSAAQZ = number of data elements per aquifer in SAAQ array
|
||||
@@ -183,7 +210,7 @@ enum index : std::vector<int>::size_type {
|
||||
ih_159 = 159 , // 0 0
|
||||
ih_160 = 160 , // 0 0
|
||||
ih_161 = 161 , // 0 0
|
||||
NGCAUS = 162 , // 0 0 NGCAUS = maximum number of aquifer connections actually used.
|
||||
NGCAUS = VI::intehead::MAX_ACT_ANLYTIC_AQUCONN, // 0 0 NGCAUS = maximum number of aquifer connections actually used.
|
||||
NWMAXZ = VI::intehead::NWMAXZ, // 0 0
|
||||
ih_164 = 164 , // 0 0
|
||||
ih_165 = 165 , // 0 0
|
||||
@@ -273,7 +300,7 @@ enum index : std::vector<int>::size_type {
|
||||
ih_249 = 249 , // 0
|
||||
ih_250 = 250 , // 0
|
||||
ih_251 = 251 , // 0
|
||||
MAAQID = VI::intehead::MAX_AN_AQUIFERS, // 0 MAAQID = maximum number of analytic aquifers
|
||||
MAAQID = VI::intehead::MAX_AN_AQUIFER_ID, // 0 MAAQID = maximum aquifer ID of all analytic aquifers
|
||||
ih_253 = 253 , // 0
|
||||
ih_254 = 254 , // 0
|
||||
ih_255 = 255 , // 0
|
||||
@@ -290,7 +317,7 @@ enum index : std::vector<int>::size_type {
|
||||
NOWUDQS = VI::intehead::NO_WELL_UDQS, // 0
|
||||
UDQPAR_1 = VI::intehead::UDQPAR_1, // 0
|
||||
ih_268 = 268 , // 0
|
||||
ih_269 = 269 , // 0
|
||||
AQU_UNKNOWN_1= VI::intehead::AQU_UNKNOWN_1, // 0 Not characterised. Equal to NAQUIF in all cases seen so far.
|
||||
ih_270 = 270 , // 0
|
||||
NCRDMX = 271 , // 0 NCRDMX = maximum number of chord segment links per well
|
||||
ih_272 = 272 , // 0
|
||||
@@ -307,7 +334,7 @@ enum index : std::vector<int>::size_type {
|
||||
ih_283 = 283 , // 0
|
||||
ih_284 = 284 , // 0
|
||||
ih_285 = 285 , // 0
|
||||
ih_286 = 286 , // 0
|
||||
MAX_ANALYTIC_AQUIFERS= VI::intehead::MAX_ANALYTIC_AQUIFERS, // Declared maximum number of analytic aquifers in model. AQUDIMS(5).
|
||||
ih_287 = 287 , // 0
|
||||
ih_288 = 288 , // 0
|
||||
ih_289 = 289 , // 0
|
||||
@@ -574,21 +601,26 @@ params_NGCTRL(const int gct)
|
||||
|
||||
Opm::RestartIO::InteHEAD&
|
||||
Opm::RestartIO::InteHEAD::
|
||||
params_NAAQZ(const int ncamax,
|
||||
const int niaaqz,
|
||||
const int nsaaqz,
|
||||
const int nxaaqz,
|
||||
const int nicaqz,
|
||||
const int nscaqz,
|
||||
const int nacaqz)
|
||||
aquiferDimensions(const AquiferDims& aqdims)
|
||||
{
|
||||
this -> data_[NCAMAX] = ncamax;
|
||||
this -> data_[NIAAQZ] = niaaqz;
|
||||
this -> data_[NSAAQZ] = nsaaqz;
|
||||
this -> data_[NXAAQZ] = nxaaqz;
|
||||
this -> data_[NICAQZ] = nicaqz;
|
||||
this -> data_[NSCAQZ] = nscaqz;
|
||||
this -> data_[NACAQZ] = nacaqz;
|
||||
this -> data_[NAQUIF] = aqdims.numAquifers;
|
||||
this -> data_[NCAMAX] = aqdims.maxNumAquiferConn;
|
||||
|
||||
this -> data_[NIAAQZ] = aqdims.numIntAquiferElem;
|
||||
this -> data_[NSAAQZ] = aqdims.numRealAquiferElem;
|
||||
this -> data_[NXAAQZ] = aqdims.numDoubAquiferElem;
|
||||
|
||||
this -> data_[NICAQZ] = aqdims.numIntConnElem;
|
||||
this -> data_[NSCAQZ] = aqdims.numRealConnElem;
|
||||
this -> data_[NACAQZ] = aqdims.numDoubConnElem;
|
||||
|
||||
this -> data_[NGCAUS] = aqdims.maxNumActiveAquiferConn;
|
||||
this -> data_[MAAQID] = aqdims.maxAquiferID;
|
||||
|
||||
// Not characterised. Equal to NAQUIF in all cases seen this far.
|
||||
this -> data_[AQU_UNKNOWN_1] = this -> data_[NAQUIF];
|
||||
|
||||
this -> data_[MAX_ANALYTIC_AQUIFERS] = aqdims.maxNumAquifers;
|
||||
|
||||
return *this;
|
||||
}
|
||||
@@ -712,8 +744,8 @@ actionParam(const ActionParam& act_par)
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
//InteHEAD parameters which meaning are currently not known, but which are needed for Eclipse restart runs with UDQ and ACTIONX data
|
||||
// InteHEAD parameters which meaning are currently not known, but which are
|
||||
// needed for Eclipse restart runs with UDQ and ACTIONX data
|
||||
Opm::RestartIO::InteHEAD&
|
||||
Opm::RestartIO::InteHEAD::
|
||||
variousUDQ_ACTIONXParam()
|
||||
@@ -773,7 +805,7 @@ Opm::RestartIO::InteHEAD::networkDimensions(const NetworkDims& nwdim)
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
// =====================================================================
|
||||
|
||||
Opm::RestartIO::InteHEAD::TimePoint
|
||||
Opm::RestartIO::getSimulationTimePoint(const std::time_t start,
|
||||
@@ -800,3 +832,70 @@ Opm::RestartIO::getSimulationTimePoint(const std::time_t start,
|
||||
static_cast<int>(usec),
|
||||
};
|
||||
}
|
||||
|
||||
namespace {
|
||||
int getNumberOfAnalyticAquifers(const Opm::AquiferConfig& cfg)
|
||||
{
|
||||
const auto numAnalyticAquifers = cfg.ct().size() + cfg.fetp().size();
|
||||
|
||||
return static_cast<int>(numAnalyticAquifers);
|
||||
}
|
||||
|
||||
int getMaximumNumberOfAnalyticAquifers(const Opm::Runspec& runspec)
|
||||
{
|
||||
return runspec.aquiferDimensions().maxAnalyticAquifers();
|
||||
}
|
||||
|
||||
int getMaximumNumberOfAnalyticAquiferConnections(const Opm::Runspec& runspec)
|
||||
{
|
||||
return runspec.aquiferDimensions().maxAnalyticAquiferConnections();
|
||||
}
|
||||
|
||||
int getMaximumNumberOfActiveAnalyticAquiferConnections(const Opm::AquiferConfig& cfg)
|
||||
{
|
||||
auto maxNumActiveConn = 0;
|
||||
for (const auto& aqConn : cfg.connections().data()) {
|
||||
const auto nActiveConn = static_cast<int>(aqConn.second.size());
|
||||
|
||||
maxNumActiveConn = std::max(maxNumActiveConn, nActiveConn);
|
||||
}
|
||||
|
||||
return maxNumActiveConn;
|
||||
}
|
||||
|
||||
int getMaximumAnalyticAquiferID(const Opm::AquiferConfig& cfg)
|
||||
{
|
||||
auto maxAquID = [](const auto& aquiferCollection) -> int
|
||||
{
|
||||
return std::accumulate(aquiferCollection.begin(), aquiferCollection.end(), 0,
|
||||
[](const int maxID, const auto& aquiferData)
|
||||
{
|
||||
return std::max(maxID, aquiferData.aquiferID);
|
||||
});
|
||||
};
|
||||
|
||||
return std::max(maxAquID(cfg.ct()), maxAquID(cfg.fetp()));
|
||||
}
|
||||
}
|
||||
|
||||
Opm::RestartIO::InteHEAD::AquiferDims
|
||||
Opm::RestartIO::inferAquiferDimensions(const EclipseState& es)
|
||||
{
|
||||
auto dim = Opm::RestartIO::InteHEAD::AquiferDims{};
|
||||
const auto& cfg = es.aquifer();
|
||||
|
||||
if (cfg.hasAnalyticalAquifer()) {
|
||||
dim.numAquifers = getNumberOfAnalyticAquifers(cfg);
|
||||
dim.maxNumAquifers = getMaximumNumberOfAnalyticAquifers(es.runspec());
|
||||
|
||||
dim.maxNumAquiferConn =
|
||||
getMaximumNumberOfAnalyticAquiferConnections(es.runspec());
|
||||
|
||||
dim.maxNumActiveAquiferConn =
|
||||
getMaximumNumberOfActiveAnalyticAquiferConnections(cfg);
|
||||
|
||||
dim.maxAquiferID = getMaximumAnalyticAquiferID(cfg);
|
||||
}
|
||||
|
||||
return dim;
|
||||
}
|
||||
|
||||
@@ -649,9 +649,9 @@ namespace {
|
||||
return rst_view.hasKeyword<double>("XAAQ");
|
||||
}
|
||||
|
||||
std::size_t numAnalyticAquifers(RestartFileView& rst_view)
|
||||
std::size_t maximumAnalyticAquiferID(RestartFileView& rst_view)
|
||||
{
|
||||
return rst_view.intehead()[VI::intehead::MAX_AN_AQUIFERS];
|
||||
return rst_view.intehead()[VI::intehead::MAX_AN_AQUIFER_ID];
|
||||
}
|
||||
|
||||
std::vector<double>
|
||||
@@ -1340,10 +1340,10 @@ namespace {
|
||||
const auto& intehead = rst_view->intehead();
|
||||
const auto aquiferData = AquiferVectors{ intehead, rst_view };
|
||||
|
||||
const auto numAq = numAnalyticAquifers(*rst_view);
|
||||
const auto maxAqID = maximumAnalyticAquiferID(*rst_view);
|
||||
const auto& units = es.getUnits();
|
||||
|
||||
for (auto aquiferID = 0*numAq; aquiferID < numAq; ++aquiferID) {
|
||||
for (auto aquiferID = 0*maxAqID; aquiferID < maxAqID; ++aquiferID) {
|
||||
const auto& saaq = aquiferData.saaq(aquiferID);
|
||||
const auto& xaaq = aquiferData.xaaq(aquiferID);
|
||||
|
||||
|
||||
@@ -315,18 +315,28 @@ BOOST_AUTO_TEST_CASE(GroupSize_Parameters)
|
||||
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
|
||||
};
|
||||
|
||||
const auto ih = Opm::RestartIO::InteHEAD{}
|
||||
.params_NAAQZ(1, 61, 803, 3988, 74989, 484820, 4586834);
|
||||
.aquiferDimensions(aqudims);
|
||||
|
||||
const auto& v = ih.data();
|
||||
|
||||
BOOST_CHECK_EQUAL(v[VI::intehead::NCAMAX], 1);
|
||||
BOOST_CHECK_EQUAL(v[VI::intehead::NIAAQZ], 61);
|
||||
BOOST_CHECK_EQUAL(v[VI::intehead::NSAAQZ], 803);
|
||||
BOOST_CHECK_EQUAL(v[VI::intehead::NXAAQZ], 3988);
|
||||
BOOST_CHECK_EQUAL(v[VI::intehead::NICAQZ], 74989);
|
||||
BOOST_CHECK_EQUAL(v[VI::intehead::NSCAQZ], 484820);
|
||||
BOOST_CHECK_EQUAL(v[VI::intehead::NACAQZ], 4586834);
|
||||
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::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_AUTO_TEST_CASE(Time_and_report_step)
|
||||
@@ -575,6 +585,10 @@ BOOST_AUTO_TEST_CASE(TestHeader) {
|
||||
const auto nmfipr = 22;
|
||||
const auto ngroup = 8;
|
||||
|
||||
const auto aqudims = Opm::RestartIO::InteHEAD::AquiferDims {
|
||||
1, 61, ncamax, 3988, 74989, niaaqz, nsaaqz, nxaaqz, nicaqz, nscaqz, nacaqz
|
||||
};
|
||||
|
||||
auto unit_system = Opm::UnitSystem::newMETRIC();
|
||||
auto ih = Opm::RestartIO::InteHEAD{}
|
||||
.dimensions(nx, ny, nz)
|
||||
@@ -587,7 +601,7 @@ BOOST_AUTO_TEST_CASE(TestHeader) {
|
||||
.params_NWELZ(niwelz, nswelz, nxwelz, nzwelz)
|
||||
.params_NCON(niconz, nsconz, nxconz)
|
||||
.params_GRPZ({nigrpz, nsgrpz, nxgrpz, nzgrpz})
|
||||
.params_NAAQZ(ncamax, niaaqz, nsaaqz, nxaaqz, nicaqz, nscaqz, nacaqz)
|
||||
.aquiferDimensions(aqudims)
|
||||
.stepParam(tstep, report_step)
|
||||
.tuningParam({newtmx, newtmn, litmax, litmin, mxwsit, mxwpit, 0})
|
||||
.variousParam(version, iprog)
|
||||
|
||||
Reference in New Issue
Block a user