示例#1
0
def test_df2ecl_pvtg():
    """Test generation of PVTG include statements"""
    pvtg_df = pd.DataFrame(
        columns=["OGR", "VOLUMEFACTOR", "VISCOSITY", "PRESSURE", "PVTNUM"],
        data=[
            [0.00014, 0.0523, 0.0234, 30.0, 1],
            [0.00000, 0.0036, 0.0359, 30.0, 1],
            [0.00014, 0.0523, 0.0234, 60.0, 2],
        ],
    )
    assert "PVTG" in pvt.df2ecl_pvtg(pvtg_df)
    assert "PVTG" in pvt.df2ecl_pvtg(pvtg_df.assign(KEYWORD="PVTG"))
    pd.testing.assert_frame_equal(
        pvt.df(pvt.df2ecl_pvtg(pvtg_df)).drop("KEYWORD", axis="columns"), pvtg_df
    )

    # If PVTNUM is missing, the code gives up:
    assert "PVTG" not in pvt.df2ecl_pvtg(
        pd.concat([pvtg_df, pvtg_df]).drop("PVTNUM", axis="columns")
    )

    # Unless there is only one row:
    assert "PVTG" in pvt.df2ecl_pvtg(pvtg_df.head(1).drop("PVTNUM", axis="columns"))

    # Missing column:
    with pytest.raises(KeyError, match="VOLUMEFACTOR"):
        pvt.df2ecl_pvtg(pvtg_df.drop("VOLUMEFACTOR", axis="columns"))
示例#2
0
def test_pvtg_string():
    """Test parsing of PVTG"""

    # Example data from E100 manual
    string = """
PVTG
30 0.00014    0.0523 0.0234
   0          0.0521 0.0238 /
90 0.00012    0.0132 0.0252
   0          0.0131 0.0253 /
150 0.00015   0.00877 0.0281
   0          0.00861 0.0275 /
210 0.00019   0.00554 0.0318
    0         0.00555 0.0302 /
270 0.00029   0.00417 0.0355
    0         0.00421 0.0330 /
330 0.00049   0.00357 0.0392
    0         0.00361 0.0358 /
530 0.00060   0.00356 0.0393
    0         0.00360 0.0359 /
/ null record to terminate table 1
60 0.00014    0.0523 0.0234 /
120 0.00012   0.0132 0.0252 /
180 0.00015   0.00877 0.0281 /
240 0.00019   0.00554 0.0318 /
300 0.00029   0.00417 0.0355 /
360 0.00049   0.00357 0.0392 /
560 0.00060   0.00356 0.0393
    0         0.00360 0.0359 / undersaturated data for Pg=560
/ null record to terminate table 2
"""
    pvtg_df = pvt.pvtg_fromdeck(string)
    assert "PRESSURE" in pvtg_df
    assert "OGR" in pvtg_df
    assert "PVTNUM" in pvtg_df
    assert "VOLUMEFACTOR" in pvtg_df
    assert "VISCOSITY" in pvtg_df
    assert len(pvtg_df["PVTNUM"].unique()) == 2
    assert len(pvtg_df["PRESSURE"].unique()) == 14
    assert max(pvtg_df["VOLUMEFACTOR"]) == 0.0523
    assert max(pvtg_df["VISCOSITY"]) == 0.0393

    # Test emtpy data:
    inc = pvt.df2ecl_pvtg(pvt.df(""))
    assert "No data" in inc
    assert pvt.df(inc).empty
示例#3
0
def test_pvtg_string():
    """Test parsing of PVTG"""

    # Example data from E100 manual
    string = """
PVTG
30 0.00014    0.0523 0.0234
   0          0.0521 0.0238 /
90 0.00012    0.0132 0.0252
   0          0.0131 0.0253 /
150 0.00015   0.00877 0.0281
   0          0.00861 0.0275 /
210 0.00019   0.00554 0.0318
    0         0.00555 0.0302 /
270 0.00029   0.00417 0.0355
    0         0.00421 0.0330 /
330 0.00049   0.00357 0.0392
    0         0.00361 0.0358 /
530 0.00060   0.00356 0.0393
    0         0.00360 0.0359 /
/ null record to terminate table 1
60 0.00014    0.0523 0.0234 /
120 0.00012   0.0132 0.0252 /
180 0.00015   0.00877 0.0281 /
240 0.00019   0.00554 0.0318 /
300 0.00029   0.00417 0.0355 /
360 0.00049   0.00357 0.0392 /
560 0.00060   0.00356 0.0393
    0         0.00360 0.0359 / undersaturated data for Pg=560
/ null record to terminate table 2
"""
    pvtg_df = pvt.pvtg_fromdeck(string)
    assert "PRESSURE" in pvtg_df
    assert "OGR" in pvtg_df
    assert "PVTNUM" in pvtg_df
    assert "VOLUMEFACTOR" in pvtg_df
    assert "VISCOSITY" in pvtg_df
    assert len(pvtg_df["PVTNUM"].unique()) == 2
    assert len(pvtg_df["PRESSURE"].unique()) == 14
    assert max(pvtg_df["VOLUMEFACTOR"]) == 0.0523
    assert max(pvtg_df["VISCOSITY"]) == 0.0393

    # Test empty data:
    inc = pvt.df2ecl_pvtg(pvt.df(""))
    assert "No data" in inc
    assert pvt.df(inc).empty

    # Simpler string and dataframe
    string = """
PVTG
30 0.00014    0.0523 0.0234
    0         0.00360 0.0359 /
/
60 0.00014    0.0523 0.0234 /
/
"""
    df = pvt.pvtg_fromdeck(string)
    pd.testing.assert_frame_equal(
        df,
        pd.DataFrame(
            columns=["OGR", "VOLUMEFACTOR", "VISCOSITY", "PRESSURE", "PVTNUM"],
            data=[
                [0.00014, 0.0523, 0.0234, 30.0, 1],
                [0.00000, 0.0036, 0.0359, 30.0, 1],
                [0.00014, 0.0523, 0.0234, 60.0, 2],
            ],
        ),
    )