Merge pull request #559 from kel85uk/fix_influx_coeff

Fix for aquifer making connection
This commit is contained in:
Atgeirr Flø Rasmussen
2018-12-07 09:56:40 +01:00
committed by GitHub
7 changed files with 205 additions and 38 deletions

View File

@@ -50,6 +50,10 @@ inline Deck createAQUANCONDeck() {
"\n"
"AQUANCON\n"
" 1 1 1 1 1 1 1 J- 1.0 1.0 NO /\n"
" 1 1 3 1 3 3 3 I+ 0.5 1.0 NO /\n"
" 1 1 3 1 3 3 3 J+ 0.75 1.0 NO /\n"
" 1 1 3 1 3 3 3 J- 2.75 1.0 NO /\n"
" 1 2 3 2 3 1 1 I+ 2.75 1.0 NO /\n"
"/ \n";
Parser parser;
@@ -65,13 +69,29 @@ inline std::vector<Aquancon::AquanconOutput> init_aquancon(){
return aquifers;
}
inline std::vector<Aquancon::AquanconOutput> fill_result(){
auto deck = createAQUANCONDeck();
EclipseState eclState( deck );
Aquancon aqucon( eclState.getInputGrid(), deck);
std::vector<Aquancon::AquanconOutput> aquifers = aqucon.getAquOutput();
return aquifers;
}
BOOST_AUTO_TEST_CASE(AquanconTest){
std::vector< Aquancon::AquanconOutput > aquifers = init_aquancon();
for (const auto& it : aquifers){
for (size_t i = 0; i < it.global_index.size(); ++i){
BOOST_CHECK_EQUAL(it.aquiferID , 1);
BOOST_CHECK_EQUAL(it.global_index.at(i) , 0);
BOOST_CHECK_EQUAL(it.reservoir_face_dir.at(i) , 8);
}
}
}
std::vector< Aquancon::AquanconOutput > expected_output = fill_result();
BOOST_CHECK_EQUAL(aquifers.size(), expected_output.size());
for (size_t i = 0; i < aquifers.size(); ++i)
{
BOOST_CHECK_EQUAL_COLLECTIONS( aquifers.at(i).global_index.begin(), aquifers.at(i).global_index.end(),
expected_output.at(i).global_index.begin(), expected_output.at(i).global_index.end() );
BOOST_CHECK_EQUAL_COLLECTIONS( aquifers.at(i).influx_multiplier.begin(), aquifers.at(i).influx_multiplier.end(),
expected_output.at(i).influx_multiplier.begin(), expected_output.at(i).influx_multiplier.end() );
BOOST_CHECK_EQUAL_COLLECTIONS( aquifers.at(i).reservoir_face_dir.begin(), aquifers.at(i).reservoir_face_dir.end(),
expected_output.at(i).reservoir_face_dir.begin(), expected_output.at(i).reservoir_face_dir.end() );
BOOST_CHECK_EQUAL_COLLECTIONS( aquifers.at(i).record_index.begin(), aquifers.at(i).record_index.end(),
expected_output.at(i).record_index.begin(), expected_output.at(i).record_index.end() );
}
}

View File

@@ -51,15 +51,51 @@ inline Deck createAquiferCTDeck() {
"SOLUTION\n"
"\n"
"AQUCT\n"
" 1 2000.0 1000 100 .3 3.0e-5 330 10 360.0 1 2 /\n"
" 1 2000.0 1.5 100 .3 3.0e-5 330 10 360.0 1 2 /\n"
"/ \n";
Parser parser;
return parser.parseString(deckData, ParseContext());
}
inline std::vector<AquiferCT::AQUCT_data> init_aquiferct(){
auto deck = createAquiferCTDeck();
inline Deck createAquiferCTDeckDefaultP0() {
const char *deckData =
"DIMENS\n"
"3 3 3 /\n"
"\n"
"AQUDIMS\n"
"1* 1* 2 100 1 1000 /\n"
"GRID\n"
"\n"
"ACTNUM\n"
" 0 8*1 0 8*1 0 8*1 /\n"
"DXV\n"
"1 1 1 /\n"
"\n"
"DYV\n"
"1 1 1 /\n"
"\n"
"DZV\n"
"1 1 1 /\n"
"\n"
"TOPS\n"
"9*100 /\n"
"\n"
"PROPS\n"
"AQUTAB\n"
" 0.01 0.112 \n"
" 0.05 0.229 /\n"
"SOLUTION\n"
"\n"
"AQUCT\n"
" 1 2000.0 1* 100 .3 3.0e-5 330 10 360.0 1 2 /\n"
"/ \n";
Parser parser;
return parser.parseString(deckData, ParseContext());
}
inline std::vector<AquiferCT::AQUCT_data> init_aquiferct(Deck& deck){
EclipseState eclState( deck );
AquiferCT aquct( eclState, deck);
std::vector<AquiferCT::AQUCT_data> aquiferct = aquct.getAquifers();
@@ -68,11 +104,21 @@ inline std::vector<AquiferCT::AQUCT_data> init_aquiferct(){
}
BOOST_AUTO_TEST_CASE(AquiferCTTest){
std::vector< AquiferCT::AQUCT_data > aquiferct = init_aquiferct();
auto deck = createAquiferCTDeck();
std::vector< AquiferCT::AQUCT_data > aquiferct = init_aquiferct(deck);
for (const auto& it : aquiferct){
BOOST_CHECK_EQUAL(it.aquiferID , 1);
BOOST_CHECK_EQUAL(it.phi_aq , 0.3);
BOOST_CHECK_EQUAL(it.inftableID , 2);
}
BOOST_CHECK_CLOSE(*(it.p0), 1.5e5, 1e-6);
}
auto deck_default_p0 = createAquiferCTDeckDefaultP0();
aquiferct = init_aquiferct(deck_default_p0);
for (const auto& it : aquiferct){
BOOST_CHECK_EQUAL(it.aquiferID , 1);
BOOST_CHECK_EQUAL(it.phi_aq , 0.3);
BOOST_CHECK_EQUAL(it.inftableID , 2);
BOOST_CHECK(it.p0 == nullptr);
}
}