Exemple #1
0
static void check_parser(ParserPtr parser) {
    DeckPtr deck =  parser->parseString(pvtoData, ParseMode());
    DeckKeywordConstPtr kw1 = deck->getKeyword("PVTO" , 0);
    BOOST_CHECK_EQUAL(5U , kw1->size());

    DeckRecordConstPtr record0 = kw1->getRecord(0);
    DeckRecordConstPtr record1 = kw1->getRecord(1);
    DeckRecordConstPtr record2 = kw1->getRecord(2);
    DeckRecordConstPtr record3 = kw1->getRecord(3);
    DeckRecordConstPtr record4 = kw1->getRecord(4);

    DeckItemConstPtr item0_0 = record0->getItem("RS");
    DeckItemConstPtr item0_1 = record0->getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item0_0->size());
    BOOST_CHECK_EQUAL(9U , item0_1->size());
    BOOST_CHECK_EQUAL(2U , record0->size());

    DeckItemConstPtr item1_0 = record1->getItem("RS");
    DeckItemConstPtr item1_1 = record1->getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item1_0->size());
    BOOST_CHECK_EQUAL(9U , item1_1->size());
    BOOST_CHECK_EQUAL(2U , record1->size());

    DeckItemConstPtr item2_0 = record2->getItem("RS");
    DeckItemConstPtr item2_1 = record2->getItem("DATA");
    BOOST_CHECK(item2_0->defaultApplied(0));
    BOOST_CHECK_EQUAL(0U , item2_1->size());
    BOOST_CHECK_EQUAL(2U , record2->size());

    DeckItemConstPtr item3_0 = record3->getItem("RS");
    DeckItemConstPtr item3_1 = record3->getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item3_0->size());
    BOOST_CHECK_EQUAL(9U , item3_1->size());
    BOOST_CHECK_EQUAL(2U , record3->size());

    DeckItemConstPtr item4_0 = record4->getItem("RS");
    DeckItemConstPtr item4_1 = record4->getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item4_0->size());
    BOOST_CHECK_EQUAL(9U , item4_1->size());
    BOOST_CHECK_EQUAL(2U , record4->size());

    Opm::PvtoTable pvtoTable;
    pvtoTable.initFORUNITTESTONLY(kw1, /*tableIdx=*/0);
    const auto &outerTable = *pvtoTable.getOuterTable();
    const auto &innerTable0 = *pvtoTable.getInnerTable(0);

    BOOST_CHECK_EQUAL(2, outerTable.numRows());
    BOOST_CHECK_EQUAL(4, outerTable.numColumns());
    BOOST_CHECK_EQUAL(3, innerTable0.numRows());
    BOOST_CHECK_EQUAL(3, innerTable0.numColumns());

    BOOST_CHECK_EQUAL(1e-3, outerTable.getGasSolubilityColumn()[0]);
    BOOST_CHECK_EQUAL(1.0e5, outerTable.getPressureColumn()[0]);
    BOOST_CHECK_EQUAL(outerTable.getPressureColumn()[0], innerTable0.getPressureColumn()[0]);
    BOOST_CHECK_EQUAL(1.01, outerTable.getOilFormationFactorColumn()[0]);
    BOOST_CHECK_EQUAL(outerTable.getOilFormationFactorColumn()[0], innerTable0.getOilFormationFactorColumn()[0]);
    BOOST_CHECK_EQUAL(1.02e-3, outerTable.getOilViscosityColumn()[0]);
    BOOST_CHECK_EQUAL(outerTable.getOilViscosityColumn()[0], innerTable0.getOilViscosityColumn()[0]);
}
Exemple #2
0
static void check_parser(ParserPtr parser) {
    DeckPtr deck =  parser->parseString(pvtoData, ParseContext());
    const auto& kw1 = deck->getKeyword("PVTO" , 0);
    BOOST_CHECK_EQUAL(5U , kw1.size());

    const auto& record0 = kw1.getRecord(0);
    const auto& record1 = kw1.getRecord(1);
    const auto& record2 = kw1.getRecord(2);
    const auto& record3 = kw1.getRecord(3);
    const auto& record4 = kw1.getRecord(4);

    const auto& item0_0 = record0.getItem("RS");
    const auto& item0_1 = record0.getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item0_0.size());
    BOOST_CHECK_EQUAL(9U , item0_1.size());
    BOOST_CHECK_EQUAL(2U , record0.size());

    const auto& item1_0 = record1.getItem("RS");
    const auto& item1_1 = record1.getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item1_0.size());
    BOOST_CHECK_EQUAL(9U , item1_1.size());
    BOOST_CHECK_EQUAL(2U , record1.size());

    const auto& item2_0 = record2.getItem("RS");
    const auto& item2_1 = record2.getItem("DATA");
    BOOST_CHECK(item2_0.defaultApplied(0));
    BOOST_CHECK_EQUAL(0U , item2_1.size());
    BOOST_CHECK_EQUAL(2U , record2.size());

    const auto& item3_0 = record3.getItem("RS");
    const auto& item3_1 = record3.getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item3_0.size());
    BOOST_CHECK_EQUAL(9U , item3_1.size());
    BOOST_CHECK_EQUAL(2U , record3.size());

    const auto& item4_0 = record4.getItem("RS");
    const auto& item4_1 = record4.getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item4_0.size());
    BOOST_CHECK_EQUAL(9U , item4_1.size());
    BOOST_CHECK_EQUAL(2U , record4.size());


    Opm::PvtoTable pvtoTable(kw1 , 0);
    BOOST_CHECK_EQUAL(2, pvtoTable.size());

    const auto &table0 = pvtoTable.getUnderSaturatedTable(0);
    const auto& BO = table0.getColumn( "BO" );

    BOOST_CHECK_EQUAL( 3, table0.numRows());
    BOOST_CHECK_EQUAL( 3, table0.numColumns());
    BOOST_CHECK_EQUAL( BO.front( ) , 1.01 );
    BOOST_CHECK_EQUAL( BO.back( ) , 1.20 );

    BOOST_CHECK_CLOSE(1.15 , table0.evaluate( "BO" , 250*1e5 ) , 1e-6);

    BOOST_CHECK_CLOSE( 1.15 , pvtoTable.evaluate( "BO" , 1e-3 , 250*1e5 ) , 1e-6 );
    BOOST_CHECK_CLOSE( 1.15 , pvtoTable.evaluate( "BO" , 0.0 , 250*1e5 ) , 1e-6 );
}
Exemple #3
0
void check_SgofTable(ParserPtr parser) {
    DeckPtr deck =  parser->parseString(parserData);
    Opm::SgofTable sgofTable(deck->getKeyword("SGOF"));

    BOOST_CHECK_EQUAL(10U, sgofTable.getSgColumn().size());
    BOOST_CHECK_EQUAL(0.1, sgofTable.getSgColumn()[0]);
    BOOST_CHECK_EQUAL(0.0, sgofTable.getKrgColumn()[0]);
    BOOST_CHECK_EQUAL(1.0, sgofTable.getKrogColumn()[0]);
    BOOST_CHECK_EQUAL(0.0, sgofTable.getPcogColumn()[0]);
}
Exemple #4
0
void check_parser(ParserPtr parser) {
    DeckPtr deck =  parser->parseString(parserData);
    DeckKeywordConstPtr kw1 = deck->getKeyword("SGOF");
    BOOST_CHECK_EQUAL(1U , kw1->size());

    DeckRecordConstPtr record0 = kw1->getRecord(0);
    BOOST_CHECK_EQUAL(1U , record0->size());

    DeckItemConstPtr item0 = record0->getItem(0);
    BOOST_CHECK_EQUAL(10U * 4, item0->size());
}
Exemple #5
0
    void Parser::parseFile(DeckPtr deck, const boost::filesystem::path& file, const boost::filesystem::path& rootPath, bool parseStrict) const {
        bool verbose = false;
        std::ifstream inputstream;
        size_t lineNR = 0;
        inputstream.open(file.string().c_str());

        if (inputstream) {
            RawKeywordPtr rawKeyword;
            
            while (tryParseKeyword(deck, file.string() , lineNR , inputstream, rawKeyword, parseStrict)) {
                if (rawKeyword->getKeywordName() == Opm::RawConsts::include) {
                    RawRecordConstPtr firstRecord = rawKeyword->getRecord(0);
                    std::string includeFileString = firstRecord->getItem(0);
                    boost::filesystem::path includeFile(includeFileString);

                    if (includeFile.is_relative())
                        includeFile = rootPath / includeFile;

                    if (verbose)
                        std::cout << rawKeyword->getKeywordName() << "  " << includeFile << std::endl;

                    parseFile(deck, includeFile, rootPath , parseStrict);
                } else {
                    if (verbose)
                        std::cout << rawKeyword->getKeywordName() << std::endl;

                    if (hasKeyword(rawKeyword->getKeywordName())) {
                        ParserKeywordConstPtr parserKeyword = m_parserKeywords.at(rawKeyword->getKeywordName());
                        ParserKeywordActionEnum action = parserKeyword->getAction();
                        if (action == INTERNALIZE) {
                            DeckKeywordConstPtr deckKeyword = parserKeyword->parse(rawKeyword);
                            deck->addKeyword(deckKeyword);
                        } else if (action == IGNORE_WARNING) 
                            deck->addWarning( "The keyword " + rawKeyword->getKeywordName() + " is ignored - this might potentially affect the results" , file.string() , rawKeyword->getLineNR());
                    } else {
                        DeckKeywordConstPtr deckKeyword(new DeckKeyword(rawKeyword->getKeywordName(), false));
                        deck->addKeyword(deckKeyword);
                        deck->addWarning( "The keyword " + rawKeyword->getKeywordName() + " is not recognized" , file.string() , lineNR);
                    }
                }
                rawKeyword.reset();
            }

            inputstream.close();
        } else
            throw std::invalid_argument("Failed to open file: " + file.string());
    }
static std::shared_ptr< Deck > deckWithGRUPTREE() {
    DeckPtr deck = createDeck();
    DeckKeyword gruptreeKeyword("GRUPTREE");

    DeckRecord recordChildOfField;
    auto itemChild1 = DeckItem::make< std::string >( "CHILD_GROUP" );
    itemChild1.push_back(std::string("BARNET"));
    auto itemParent1 = DeckItem::make< std::string >( "PARENT_GROUP" );
    itemParent1.push_back(std::string("FAREN"));

    recordChildOfField.addItem( std::move( itemChild1 ) );
    recordChildOfField.addItem( std::move( itemParent1 ) );
    gruptreeKeyword.addRecord( std::move( recordChildOfField ) );
    deck->addKeyword( std::move( gruptreeKeyword ) );

    return deck;
}
Exemple #7
0
static void check_parser(ParserPtr parser) {
    DeckPtr deck =  parser->parseString(pvtgData, ParseMode());
    DeckKeywordConstPtr kw1 = deck->getKeyword("PVTG" , 0);
    BOOST_CHECK_EQUAL(5U , kw1->size());

    DeckRecordConstPtr record0 = kw1->getRecord(0);
    DeckRecordConstPtr record1 = kw1->getRecord(1);
    DeckRecordConstPtr record2 = kw1->getRecord(2);
    DeckRecordConstPtr record3 = kw1->getRecord(3);
    DeckRecordConstPtr record4 = kw1->getRecord(4);

    DeckItemConstPtr item0_0 = record0->getItem("GAS_PRESSURE");
    DeckItemConstPtr item0_1 = record0->getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item0_0->size());
    BOOST_CHECK_EQUAL(9U , item0_1->size());
    BOOST_CHECK_EQUAL(2U , record0->size());

    DeckItemConstPtr item1_0 = record1->getItem("GAS_PRESSURE");
    DeckItemConstPtr item1_1 = record1->getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item1_0->size());
    BOOST_CHECK_EQUAL(9U , item1_1->size());
    BOOST_CHECK_EQUAL(2U , record1->size());

    DeckItemConstPtr item2_0 = record2->getItem("GAS_PRESSURE");
    DeckItemConstPtr item2_1 = record2->getItem("DATA");
    BOOST_CHECK( item2_0->defaultApplied(0));
    BOOST_CHECK_EQUAL(0U , item2_1->size());
    BOOST_CHECK_EQUAL(2U , record2->size());


    DeckItemConstPtr item3_0 = record3->getItem("GAS_PRESSURE");
    DeckItemConstPtr item3_1 = record3->getItem("DATA");
    BOOST_CHECK( !item3_1->defaultApplied(0));
    BOOST_CHECK( item3_1->defaultApplied(1));
    BOOST_CHECK( !item3_1->defaultApplied(2));
    BOOST_CHECK( !item3_1->defaultApplied(3));
    BOOST_CHECK( item3_1->defaultApplied(4));
    BOOST_CHECK( !item3_1->defaultApplied(5));
    BOOST_CHECK_EQUAL(1U , item3_0->size());
    BOOST_CHECK_EQUAL(9U , item3_1->size());
    BOOST_CHECK_EQUAL(2U , record3->size());


    DeckItemConstPtr item4_0 = record4->getItem("GAS_PRESSURE");
    DeckItemConstPtr item4_1 = record4->getItem("DATA");
    BOOST_CHECK_EQUAL(1U , item4_0->size());
    BOOST_CHECK_EQUAL(9U , item4_1->size());
    BOOST_CHECK_EQUAL(2U , record4->size());


    {
        Opm::PvtgTable pvtgTable;
        pvtgTable.initFORUNITTESTONLY(kw1, 0);

        const auto &outerTable = *pvtgTable.getOuterTable();
        const auto &innerTable0 = *pvtgTable.getInnerTable(0);

        BOOST_CHECK_EQUAL(2U, outerTable.numRows());
        BOOST_CHECK_EQUAL(4U, outerTable.numColumns());
        BOOST_CHECK_EQUAL(3U, innerTable0.numRows());
        BOOST_CHECK_EQUAL(3U, innerTable0.numColumns());

        BOOST_CHECK_EQUAL(20.0e5, outerTable.getPressureColumn()[0]);
        BOOST_CHECK_EQUAL(0.00002448, outerTable.getOilSolubilityColumn()[0]);
        BOOST_CHECK_EQUAL(outerTable.getOilSolubilityColumn()[0], innerTable0.getOilSolubilityColumn()[0]);
        BOOST_CHECK_EQUAL(0.061895, outerTable.getGasFormationFactorColumn()[0]);
        BOOST_CHECK_EQUAL(outerTable.getGasFormationFactorColumn()[0], innerTable0.getGasFormationFactorColumn()[0]);
        BOOST_CHECK_EQUAL(1.299e-5, outerTable.getGasViscosityColumn()[0]);
        BOOST_CHECK_EQUAL(outerTable.getGasViscosityColumn()[0], innerTable0.getGasViscosityColumn()[0]);
    }
}