Add guide rate delay and damping to rst header class
This commit is contained in:
parent
ead5a19209
commit
53fe0f2d11
@ -24,10 +24,12 @@
|
|||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
class UnitSystem;
|
||||||
|
|
||||||
namespace RestartIO {
|
namespace RestartIO {
|
||||||
|
|
||||||
struct RstHeader {
|
struct RstHeader {
|
||||||
RstHeader(const std::vector<int>& intehead, const std::vector<bool>& logihead, const std::vector<double>& doubhead);
|
RstHeader(const UnitSystem& unit_system, const std::vector<int>& intehead, const std::vector<bool>& logihead, const std::vector<double>& doubhead);
|
||||||
|
|
||||||
int nx;
|
int nx;
|
||||||
int ny;
|
int ny;
|
||||||
@ -112,6 +114,8 @@ struct RstHeader {
|
|||||||
double guide_rate_d;
|
double guide_rate_d;
|
||||||
double guide_rate_e;
|
double guide_rate_e;
|
||||||
double guide_rate_f;
|
double guide_rate_f;
|
||||||
|
double guide_rate_delay;
|
||||||
|
double guide_rate_damping;
|
||||||
double udq_range;
|
double udq_range;
|
||||||
double udq_undefined;
|
double udq_undefined;
|
||||||
double udq_eps;
|
double udq_eps;
|
||||||
|
@ -23,13 +23,15 @@
|
|||||||
#include <opm/output/eclipse/VectorItems/logihead.hpp>
|
#include <opm/output/eclipse/VectorItems/logihead.hpp>
|
||||||
#include <opm/output/eclipse/VectorItems/doubhead.hpp>
|
#include <opm/output/eclipse/VectorItems/doubhead.hpp>
|
||||||
#include <opm/common/utility/TimeService.hpp>
|
#include <opm/common/utility/TimeService.hpp>
|
||||||
|
#include <opm/parser/eclipse/Units/UnitSystem.hpp>
|
||||||
|
|
||||||
namespace VI = ::Opm::RestartIO::Helpers::VectorItems;
|
namespace VI = ::Opm::RestartIO::Helpers::VectorItems;
|
||||||
|
using M = ::Opm::UnitSystem::measure;
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
namespace RestartIO {
|
namespace RestartIO {
|
||||||
|
|
||||||
RstHeader::RstHeader(const std::vector<int>& intehead, const std::vector<bool>& logihead, const std::vector<double>& doubhead) :
|
RstHeader::RstHeader(const Opm::UnitSystem& unit_system, const std::vector<int>& intehead, const std::vector<bool>& logihead, const std::vector<double>& doubhead) :
|
||||||
nx(intehead[VI::intehead::NX]),
|
nx(intehead[VI::intehead::NX]),
|
||||||
ny(intehead[VI::intehead::NY]),
|
ny(intehead[VI::intehead::NY]),
|
||||||
nz(intehead[VI::intehead::NZ]),
|
nz(intehead[VI::intehead::NZ]),
|
||||||
@ -101,15 +103,17 @@ RstHeader::RstHeader(const std::vector<int>& intehead, const std::vector<bool>&
|
|||||||
alt_eps(logihead[VI::logihead::AltEPS]),
|
alt_eps(logihead[VI::logihead::AltEPS]),
|
||||||
group_control_active(intehead[VI::intehead::NGRNPH] == 1),
|
group_control_active(intehead[VI::intehead::NGRNPH] == 1),
|
||||||
//
|
//
|
||||||
next_timestep1(doubhead[VI::doubhead::TsInit]),
|
next_timestep1(unit_system.to_si(M::time, doubhead[VI::doubhead::TsInit])),
|
||||||
next_timestep2(doubhead[VI::doubhead::TsMaxz]),
|
next_timestep2(0),
|
||||||
max_timestep(doubhead[VI::doubhead::TsMinz]),
|
max_timestep(unit_system.to_si(M::time, doubhead[VI::doubhead::TsMaxz])),
|
||||||
guide_rate_a(doubhead[VI::doubhead::GRpar_a]),
|
guide_rate_a(doubhead[VI::doubhead::GRpar_a]),
|
||||||
guide_rate_b(doubhead[VI::doubhead::GRpar_b]),
|
guide_rate_b(doubhead[VI::doubhead::GRpar_b]),
|
||||||
guide_rate_c(doubhead[VI::doubhead::GRpar_c]),
|
guide_rate_c(doubhead[VI::doubhead::GRpar_c]),
|
||||||
guide_rate_d(doubhead[VI::doubhead::GRpar_d]),
|
guide_rate_d(doubhead[VI::doubhead::GRpar_d]),
|
||||||
guide_rate_e(doubhead[VI::doubhead::GRpar_e]),
|
guide_rate_e(doubhead[VI::doubhead::GRpar_e]),
|
||||||
guide_rate_f(doubhead[VI::doubhead::GRpar_f]),
|
guide_rate_f(doubhead[VI::doubhead::GRpar_f]),
|
||||||
|
guide_rate_delay(unit_system.to_si(M::time, doubhead[VI::doubhead::GRpar_int])),
|
||||||
|
guide_rate_damping(doubhead[VI::doubhead::GRpar_damp]),
|
||||||
udq_range(doubhead[VI::doubhead::UdqPar_2]),
|
udq_range(doubhead[VI::doubhead::UdqPar_2]),
|
||||||
udq_undefined(doubhead[VI::doubhead::UdqPar_3]),
|
udq_undefined(doubhead[VI::doubhead::UdqPar_3]),
|
||||||
udq_eps(doubhead[VI::doubhead::UdqPar_4])
|
udq_eps(doubhead[VI::doubhead::UdqPar_4])
|
||||||
|
@ -39,7 +39,7 @@ RstState::RstState(const ::Opm::UnitSystem& unit_system_,
|
|||||||
const std::vector<bool>& logihead,
|
const std::vector<bool>& logihead,
|
||||||
const std::vector<double>& doubhead):
|
const std::vector<double>& doubhead):
|
||||||
unit_system(unit_system_),
|
unit_system(unit_system_),
|
||||||
header(intehead, logihead, doubhead)
|
header(unit_system_, intehead, logihead, doubhead)
|
||||||
{
|
{
|
||||||
this->load_tuning(intehead, doubhead);
|
this->load_tuning(intehead, doubhead);
|
||||||
}
|
}
|
||||||
|
@ -1155,7 +1155,7 @@ BOOST_AUTO_TEST_CASE(WELL_POD) {
|
|||||||
const auto& scon = connectionData.getSConn();
|
const auto& scon = connectionData.getSConn();
|
||||||
const auto& xcon = connectionData.getXConn();
|
const auto& xcon = connectionData.getXConn();
|
||||||
|
|
||||||
Opm::RestartIO::RstHeader header(ih, std::vector<bool>(100), std::vector<double>(1000));
|
Opm::RestartIO::RstHeader header(units, ih, std::vector<bool>(100), std::vector<double>(1000));
|
||||||
std::vector<Opm::RestartIO::RstWell> wells;
|
std::vector<Opm::RestartIO::RstWell> wells;
|
||||||
std::vector<std::string> zwel;
|
std::vector<std::string> zwel;
|
||||||
for (const auto& s8: zwel8)
|
for (const auto& s8: zwel8)
|
||||||
|
@ -557,10 +557,11 @@ BOOST_AUTO_TEST_CASE(TestHeader) {
|
|||||||
const auto nmfipr = 22;
|
const auto nmfipr = 22;
|
||||||
const auto ngroup = 8;
|
const auto ngroup = 8;
|
||||||
|
|
||||||
|
auto unit_system = Opm::UnitSystem::newMETRIC();
|
||||||
auto ih = Opm::RestartIO::InteHEAD{}
|
auto ih = Opm::RestartIO::InteHEAD{}
|
||||||
.dimensions(nx, ny, nz)
|
.dimensions(nx, ny, nz)
|
||||||
.numActive(nactive)
|
.numActive(nactive)
|
||||||
.unitConventions(Opm::UnitSystem::newMETRIC())
|
.unitConventions(unit_system)
|
||||||
.wellTableDimensions({ numWells, maxPerf, maxWellsInGroup, maxGroupInField, maxWellsInField})
|
.wellTableDimensions({ numWells, maxPerf, maxWellsInGroup, maxGroupInField, maxWellsInField})
|
||||||
.calendarDate({year, month, mday, hour, minute, seconds, mseconds})
|
.calendarDate({year, month, mday, hour, minute, seconds, mseconds})
|
||||||
.activePhases(Ph{1,1,1})
|
.activePhases(Ph{1,1,1})
|
||||||
@ -575,7 +576,7 @@ BOOST_AUTO_TEST_CASE(TestHeader) {
|
|||||||
.regionDimensions({ntfip, nmfipr, 0,0,0})
|
.regionDimensions({ntfip, nmfipr, 0,0,0})
|
||||||
.ngroups({ngroup});
|
.ngroups({ngroup});
|
||||||
|
|
||||||
Opm::RestartIO::RstHeader header(ih.data(), std::vector<bool>(100), std::vector<double>(1000));
|
Opm::RestartIO::RstHeader header(unit_system, ih.data(), std::vector<bool>(100), std::vector<double>(1000));
|
||||||
BOOST_CHECK_EQUAL(header.nx, nx);
|
BOOST_CHECK_EQUAL(header.nx, nx);
|
||||||
BOOST_CHECK_EQUAL(header.ny, ny);
|
BOOST_CHECK_EQUAL(header.ny, ny);
|
||||||
BOOST_CHECK_EQUAL(header.nactive, nactive);
|
BOOST_CHECK_EQUAL(header.nactive, nactive);
|
||||||
|
@ -239,7 +239,7 @@ BOOST_AUTO_TEST_CASE(group_test) {
|
|||||||
for (const auto& s8: zgrp8)
|
for (const auto& s8: zgrp8)
|
||||||
zgrp.push_back(s8.c_str());
|
zgrp.push_back(s8.c_str());
|
||||||
|
|
||||||
Opm::RestartIO::RstHeader header(ih,lh,dh);
|
Opm::RestartIO::RstHeader header(unit_system,ih,lh,dh);
|
||||||
for (int ig=0; ig < header.ngroup; ig++) {
|
for (int ig=0; ig < header.ngroup; ig++) {
|
||||||
std::size_t zgrp_offset = ig * header.nzgrpz;
|
std::size_t zgrp_offset = ig * header.nzgrpz;
|
||||||
std::size_t igrp_offset = ig * header.nigrpz;
|
std::size_t igrp_offset = ig * header.nigrpz;
|
||||||
|
Loading…
Reference in New Issue
Block a user