def test_gasoil_krgendanchor(): """Test behaviour of the krgendanchor""" gasoil = GasOil(krgendanchor="sorg", sorg=0.2, h=0.1) assert gasoil.sorg gasoil.add_corey_gas(ng=1) gasoil.add_corey_oil(nog=1) # kg should be 1.0 at 1 - sorg due to krgendanchor == "sorg": assert ( gasoil.table[np.isclose(gasoil.table["sg"], 1 - gasoil.sorg)]["krg"].values[0] == 1.0 ) assert gasoil.table[np.isclose(gasoil.table["sg"], 1.0)]["krg"].values[0] == 1.0 gasoil = GasOil(krgendanchor="", sorg=0.2, h=0.1) assert gasoil.sorg gasoil.add_corey_gas(ng=1) gasoil.add_corey_oil(nog=1) # kg should be < 1 at 1 - sorg due to krgendanchor being "" assert ( gasoil.table[np.isclose(gasoil.table["sg"], 1 - gasoil.sorg)]["krg"].values[0] < 1.0 ) assert gasoil.table[np.isclose(gasoil.table["sg"], 1.0)]["krg"].values[0] == 1.0 assert gasoil.selfcheck() assert gasoil.crosspoint() > 0 # Test once more for LET curves: gasoil = GasOil(krgendanchor="sorg", sorg=0.2, h=0.1) assert gasoil.sorg gasoil.add_LET_gas(1, 1, 1.1) gasoil.add_LET_oil(1, 1, 1.1) check_linear_sections(gasoil) assert 0 < gasoil.crosspoint() < 1 # kg should be 1.0 at 1 - sorg due to krgendanchor == "sorg": assert ( gasoil.table[np.isclose(gasoil.table["sg"], 1 - gasoil.sorg)]["krg"].values[0] == 1.0 ) assert gasoil.table[np.isclose(gasoil.table["sg"], 1.0)]["krg"].values[0] == 1.0 gasoil = GasOil(krgendanchor="", sorg=0.2, h=0.1) assert gasoil.sorg gasoil.add_LET_gas(1, 1, 1.1) gasoil.add_LET_oil(1, 1, 1.1) check_linear_sections(gasoil) assert gasoil.selfcheck() # kg should be < 1 at 1 - sorg due to krgendanchor being "" assert ( gasoil.table[np.isclose(gasoil.table["sg"], 1 - gasoil.sorg)]["krg"].values[0] < 1.0 ) assert gasoil.table[np.isclose(gasoil.table["sg"], 1.0)]["krg"].values[0] == 1.0
def test_gasoil_krendmax(swl, sgcr, sorg, sgrononzero, kroend, kromax, krgend, krgmax, h, fast): """Test that relperm curves are valid in all numerical corner cases.""" if sgrononzero: sgro = sgcr else: sgro = 0 try: gasoil = GasOil(swl=swl, sgcr=sgcr, sorg=sorg, sgro=sgro, h=h, tag="", fast=fast) except AssertionError: return krgend = min(krgend, krgmax) kroend = min(kroend, kromax) gasoil.add_corey_oil(kroend=kroend, kromax=kromax) gasoil.add_corey_gas(krgend=krgend, krgmax=krgmax) check_table(gasoil.table) check_linear_sections(gasoil) assert gasoil.selfcheck() check_endpoints(gasoil, krgend, krgmax, kroend, kromax) assert 0 < gasoil.crosspoint() < 1 # Redo with krgendanchor not defaulted gasoil = GasOil(swl=swl, sgcr=sgcr, sorg=sorg, h=h, krgendanchor="", tag="") gasoil.add_corey_oil(kroend=kroend) gasoil.add_corey_gas(krgend=krgend, krgmax=krgmax) check_table(gasoil.table) check_linear_sections(gasoil) assert gasoil.selfcheck() check_endpoints(gasoil, krgend, krgmax, kroend, kromax) assert 0 < gasoil.crosspoint() < 1 # Redo with LET: gasoil = GasOil(swl=swl, sgcr=sgcr, sorg=sorg, h=h, tag="") gasoil.add_LET_oil(t=1.1, kroend=kroend, kromax=kromax) gasoil.add_LET_gas(krgend=krgend, krgmax=krgmax) check_table(gasoil.table) check_linear_sections(gasoil) assert gasoil.selfcheck() check_endpoints(gasoil, krgend, krgmax, kroend, kromax) assert 0 < gasoil.crosspoint() < 1
def test_gasoil_init(): """Test features in the constructor""" gasoil = GasOil() assert isinstance(gasoil, GasOil) assert gasoil.swirr == 0.0 assert gasoil.swl == 0.0 assert gasoil.krgendanchor == "" # Because sorg is zero gasoil = GasOil(swl=0.1) assert gasoil.swirr == 0.0 assert gasoil.swl == 0.1 gasoil = GasOil(swirr=0.1) assert gasoil.swirr == 0.1 assert gasoil.swl == 0.1 # This one is zero by default, but will follow swirr. assert gasoil.sorg == 0.0 assert gasoil.sgcr == 0.0 gasoil = GasOil(tag="foobar") assert gasoil.tag == "foobar" # This will print a warning, but will be the same as "" gasoil = GasOil(krgendanchor="bogus") assert isinstance(gasoil, GasOil) assert gasoil.krgendanchor == "" # Test with h=1 gasoil = GasOil(h=1) gasoil.add_corey_gas() gasoil.add_corey_oil() assert np.isclose(gasoil.crosspoint(), 0.5) assert len(gasoil.table) == 2 gasoil = GasOil(swl=0.1, h=1) gasoil.add_corey_gas() gasoil.add_corey_oil() assert len(gasoil.table) == 2 assert np.isclose(gasoil.crosspoint(), 0.45) assert np.isclose(gasoil.table["sg"].min(), 0) assert np.isclose(gasoil.table["sg"].max(), 0.9) # Test too small h: gasoil = GasOil(swl=0.1, h=0.00000000000000000001) # (a warning is printed that h is truncated) assert gasoil.h == 1 / SWINTEGERS
def test_gasoil_krendmax(swl, sgcr, sorg, kroend, kromax, krgend, krgmax, h, fast): """Test that krendmax gets correct in all numerical corner cases. The normalized sg-range is allowed to collapse to nothing in this test. (causes AssertionError) """ try: gasoil = GasOil(swl=swl, sgcr=sgcr, sorg=sorg, h=h, tag="", fast=fast) except AssertionError: return kroend = min(kroend, kromax) krgend = min(krgend, krgmax) gasoil.add_corey_oil(kroend=kroend, kromax=kromax) gasoil.add_corey_gas(krgend=krgend, krgmax=krgmax) check_table(gasoil.table) check_linear_sections(gasoil) assert gasoil.selfcheck() check_endpoints(gasoil, krgend, krgmax, kroend, kromax) assert 0 < gasoil.crosspoint() < 1 # Redo with krgendanchor not defaulted gasoil = GasOil(swl=swl, sgcr=sgcr, sorg=sorg, h=h, krgendanchor="", tag="") gasoil.add_corey_oil(kroend=kroend, kromax=kromax) gasoil.add_corey_gas(krgend=krgend, krgmax=krgmax) check_table(gasoil.table) check_linear_sections(gasoil) assert gasoil.selfcheck() check_endpoints(gasoil, krgend, krgmax, kroend, kromax) assert 0 < gasoil.crosspoint() < 1 # Redo with LET: gasoil = GasOil(swl=swl, sgcr=sgcr, sorg=sorg, h=h, tag="") gasoil.add_LET_oil(t=1.1, kroend=kroend, kromax=kromax) gasoil.add_LET_gas(krgend=krgend, krgmax=krgmax) check_table(gasoil.table) check_linear_sections(gasoil) assert gasoil.selfcheck() check_endpoints(gasoil, krgend, krgmax, kroend, kromax) assert 0 < gasoil.crosspoint() < 1
def test_gasoil_init(): """Check the __init__ method for GasOil are arguments handled correctly?""" gasoil = GasOil() assert isinstance(gasoil, GasOil) assert gasoil.swirr == 0.0 assert gasoil.swl == 0.0 assert gasoil.krgendanchor == "" # Because sorg is zero gasoil = GasOil(swl=0.1) assert gasoil.swirr == 0.0 assert gasoil.swl == 0.1 gasoil = GasOil(swirr=0.1) assert gasoil.swirr == 0.1 assert gasoil.swl == 0.1 # This one is zero by default, but will follow swirr. assert gasoil.sorg == 0.0 assert gasoil.sgcr == 0.0 gasoil = GasOil(tag="foobar") assert gasoil.tag == "foobar" # This will print a warning, but will be the same as "" gasoil = GasOil(krgendanchor="bogus") assert isinstance(gasoil, GasOil) assert gasoil.krgendanchor == "" # Test with h=1 gasoil = GasOil(h=1) gasoil.add_corey_gas() gasoil.add_corey_oil() assert np.isclose(gasoil.crosspoint(), 0.5) assert len(gasoil.table) == 2 gasoil = GasOil(swl=0.1, h=1) gasoil.add_corey_gas() gasoil.add_corey_oil() assert len(gasoil.table) == 2 assert np.isclose(gasoil.crosspoint(), 0.45) assert np.isclose(gasoil.table["sg"].min(), 0) assert np.isclose(gasoil.table["sg"].max(), 0.9)
def test_kroend(): """Manual testing of kromax and kroend behaviour""" gasoil = GasOil(swirr=0.01, sgcr=0.01, h=0.01, swl=0.1, sorg=0.05) gasoil.add_LET_gas() gasoil.add_LET_oil(2, 2, 2.1) assert gasoil.table["krog"].max() == 1 gasoil.add_LET_oil(2, 2, 2.1, kroend=0.5) check_linear_sections(gasoil) assert gasoil.table["krog"].max() == 0.5 assert 0 < gasoil.crosspoint() < 1 gasoil.add_corey_oil(2) assert gasoil.table["krog"].max() == 1 gasoil.add_corey_oil(nog=2, kroend=0.5) assert gasoil.table["krog"].max() == 0.5
def test_kromaxend(): """Manual testing of kromax and kroend behaviour""" gasoil = GasOil(swirr=0.01, sgcr=0.01, h=0.01, swl=0.1, sorg=0.05) gasoil.add_LET_gas() gasoil.add_LET_oil(2, 2, 2.1) assert gasoil.table["krog"].max() == 1 gasoil.add_LET_oil(2, 2, 2.1, kroend=0.5, kromax=0.9) assert gasoil.table["krog"].max() == 0.9 # Second krog-value should be kroend, values in between will be linearly # interpolated in Eclipse assert gasoil.table.sort_values("krog")[-2:-1]["krog"].values[0] == 0.5 assert 0 < gasoil.crosspoint() < 1 gasoil.add_corey_oil(2) assert gasoil.table["krog"].max() == 1 gasoil.add_corey_oil(nog=2, kroend=0.5, kromax=0.9) assert gasoil.table["krog"].max() == 0.9 assert gasoil.table.sort_values("krog")[-2:-1]["krog"].values[0] == 0.5