Changed Deck::getKeywordList:
The method will return an empty vector - instead of throwing, if you ask for a missing keyword.
This commit is contained in:
parent
97a9f25260
commit
f8bc617894
@ -60,16 +60,22 @@ namespace Opm {
|
||||
|
||||
|
||||
DeckKeywordConstPtr Deck::getKeyword(const std::string& keyword, size_t index) const {
|
||||
const std::vector<DeckKeywordConstPtr>& keywordList = getKeywordList( keyword );
|
||||
if (index < keywordList.size())
|
||||
return keywordList[index];
|
||||
else
|
||||
throw std::out_of_range("Keyword index is out of range.");
|
||||
if (hasKeyword(keyword)) {
|
||||
const std::vector<DeckKeywordConstPtr>& keywordList = getKeywordList( keyword );
|
||||
if (index < keywordList.size())
|
||||
return keywordList[index];
|
||||
else
|
||||
throw std::out_of_range("Keyword index is out of range.");
|
||||
} else
|
||||
throw std::invalid_argument("Keyword not in deck.");
|
||||
}
|
||||
|
||||
DeckKeywordConstPtr Deck::getKeyword(const std::string& keyword) const {
|
||||
const std::vector<DeckKeywordConstPtr>& keywordList = getKeywordList( keyword );
|
||||
return keywordList.back();
|
||||
if (hasKeyword(keyword)) {
|
||||
const std::vector<DeckKeywordConstPtr>& keywordList = getKeywordList( keyword );
|
||||
return keywordList.back();
|
||||
} else
|
||||
throw std::invalid_argument("Keyword not in deck.");
|
||||
}
|
||||
|
||||
DeckKeywordConstPtr Deck::getKeyword(size_t index) const {
|
||||
@ -92,7 +98,7 @@ namespace Opm {
|
||||
const std::vector<DeckKeywordConstPtr>& keywordList = m_keywordMap.find(keyword)->second;
|
||||
return keywordList;
|
||||
} else
|
||||
throw std::invalid_argument("Keyword: " + keyword + " is not found in the container");
|
||||
return m_emptyList;
|
||||
}
|
||||
|
||||
std::vector<DeckKeywordConstPtr>::const_iterator Deck::begin() const {
|
||||
|
@ -76,6 +76,7 @@ namespace Opm {
|
||||
std::shared_ptr<UnitSystem> m_defaultUnits;
|
||||
std::shared_ptr<UnitSystem> m_activeUnits;
|
||||
|
||||
std::vector<DeckKeywordConstPtr> m_emptyList;
|
||||
std::vector<DeckKeywordConstPtr> m_keywordList;
|
||||
std::map<std::string, std::vector<DeckKeywordConstPtr> > m_keywordMap;
|
||||
std::map<const DeckKeyword *, size_t> m_keywordIndex;
|
||||
|
@ -39,6 +39,7 @@ BOOST_AUTO_TEST_CASE(Initialize) {
|
||||
BOOST_AUTO_TEST_CASE(hasKeyword_empty_returnFalse) {
|
||||
Deck deck;
|
||||
BOOST_CHECK_EQUAL(false, deck.hasKeyword("Bjarne"));
|
||||
BOOST_CHECK_THROW( deck.getKeyword("Bjarne") , std::invalid_argument);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(addKeyword_singlekeyword_keywordAdded) {
|
||||
@ -47,14 +48,11 @@ BOOST_AUTO_TEST_CASE(addKeyword_singlekeyword_keywordAdded) {
|
||||
BOOST_CHECK_NO_THROW(deck.addKeyword(keyword));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getKeyword_nosuchkeyword_throws) {
|
||||
Deck deck;
|
||||
BOOST_CHECK_THROW(deck.getKeyword("TRULS" , 0), std::invalid_argument);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getKeywordList_nosuchkeyword_throws) {
|
||||
BOOST_AUTO_TEST_CASE(getKeywordList_empty_list) {
|
||||
Deck deck;
|
||||
BOOST_CHECK_THROW(deck.getKeywordList("TRULS"), std::invalid_argument);
|
||||
auto kw_list = deck.getKeywordList("TRULS");
|
||||
BOOST_CHECK_EQUAL( kw_list.size() , 0 );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getKeyword_singlekeyword_keywordreturned) {
|
||||
@ -146,12 +144,6 @@ BOOST_AUTO_TEST_CASE(getKeyword_outOfRange_throws) {
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getKeywordList_notFound_throws) {
|
||||
Deck deck;
|
||||
DeckKeywordPtr keyword = DeckKeywordPtr(new DeckKeyword("TRULS"));
|
||||
deck.addKeyword(keyword);
|
||||
BOOST_CHECK_THROW( deck.getKeywordList("TRULSX") , std::invalid_argument)
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(getKeywordList_OK) {
|
||||
Deck deck;
|
||||
|
@ -16,35 +16,36 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OPM. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "NNC.hpp"
|
||||
#include <array>
|
||||
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/NNC.hpp>
|
||||
#include <opm/parser/eclipse/Parser/ParserKeywords.hpp>
|
||||
|
||||
|
||||
namespace Opm
|
||||
{
|
||||
NNC::NNC(Opm::DeckConstPtr deck, EclipseGridConstPtr eclipseGrid)
|
||||
{
|
||||
if (deck->hasKeyword("NNC")) {
|
||||
const std::vector<DeckKeywordConstPtr>& nncs = deck->getKeywordList("NNC");
|
||||
for (size_t idx_nnc = 0; idx_nnc<nncs.size(); ++idx_nnc) {
|
||||
Opm::DeckKeywordConstPtr nnc = nncs[idx_nnc];
|
||||
size_t numNNC = nnc->size();
|
||||
for (size_t i = 0; i<numNNC; ++i) {
|
||||
std::array<size_t, 3> ijk1;
|
||||
ijk1[0] = static_cast<size_t>(nnc->getRecord(i)->getItem(0)->getInt(0)-1);
|
||||
ijk1[1] = static_cast<size_t>(nnc->getRecord(i)->getItem(1)->getInt(0)-1);
|
||||
ijk1[2] = static_cast<size_t>(nnc->getRecord(i)->getItem(2)->getInt(0)-1);
|
||||
size_t global_index1 = eclipseGrid->getGlobalIndex(ijk1[0],ijk1[1],ijk1[2]);
|
||||
|
||||
std::array<size_t, 3> ijk2;
|
||||
ijk2[0] = static_cast<size_t>(nnc->getRecord(i)->getItem(3)->getInt(0)-1);
|
||||
ijk2[1] = static_cast<size_t>(nnc->getRecord(i)->getItem(4)->getInt(0)-1);
|
||||
ijk2[2] = static_cast<size_t>(nnc->getRecord(i)->getItem(5)->getInt(0)-1);
|
||||
size_t global_index2 = eclipseGrid->getGlobalIndex(ijk2[0],ijk2[1],ijk2[2]);
|
||||
|
||||
const double trans = nnc->getRecord(i)->getItem(6)->getSIDouble(0);
|
||||
|
||||
addNNC(global_index1,global_index2,trans);
|
||||
}
|
||||
const std::vector<DeckKeywordConstPtr>& nncs = deck->getKeywordList<ParserKeywords::NNC>();
|
||||
for (size_t idx_nnc = 0; idx_nnc<nncs.size(); ++idx_nnc) {
|
||||
Opm::DeckKeywordConstPtr nnc = nncs[idx_nnc];
|
||||
size_t numNNC = nnc->size();
|
||||
for (size_t i = 0; i<numNNC; ++i) {
|
||||
std::array<size_t, 3> ijk1;
|
||||
ijk1[0] = static_cast<size_t>(nnc->getRecord(i)->getItem(0)->getInt(0)-1);
|
||||
ijk1[1] = static_cast<size_t>(nnc->getRecord(i)->getItem(1)->getInt(0)-1);
|
||||
ijk1[2] = static_cast<size_t>(nnc->getRecord(i)->getItem(2)->getInt(0)-1);
|
||||
size_t global_index1 = eclipseGrid->getGlobalIndex(ijk1[0],ijk1[1],ijk1[2]);
|
||||
|
||||
std::array<size_t, 3> ijk2;
|
||||
ijk2[0] = static_cast<size_t>(nnc->getRecord(i)->getItem(3)->getInt(0)-1);
|
||||
ijk2[1] = static_cast<size_t>(nnc->getRecord(i)->getItem(4)->getInt(0)-1);
|
||||
ijk2[2] = static_cast<size_t>(nnc->getRecord(i)->getItem(5)->getInt(0)-1);
|
||||
size_t global_index2 = eclipseGrid->getGlobalIndex(ijk2[0],ijk2[1],ijk2[2]);
|
||||
|
||||
const double trans = nnc->getRecord(i)->getItem(6)->getSIDouble(0);
|
||||
|
||||
addNNC(global_index1,global_index2,trans);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user