Ejemplo n.º 1
0
    def test_identify_var_type(self):
        self.assertEnumIsFullyDefined(EclSumVarType, "ecl_smspec_var_type",
                                      "lib/include/ert/ecl/smspec_node.h")
        self.assertEqual(EclSum.varType("WWCT:OP_X"),
                         EclSumVarType.ECL_SMSPEC_WELL_VAR)
        self.assertEqual(EclSum.varType("RPR"),
                         EclSumVarType.ECL_SMSPEC_REGION_VAR)
        self.assertEqual(EclSum.varType("WNEWTON"),
                         EclSumVarType.ECL_SMSPEC_MISC_VAR)
        self.assertEqual(EclSum.varType("AARQ:4"),
                         EclSumVarType.ECL_SMSPEC_AQUIFER_VAR)

        case = createEclSum("CSV", [("FOPT", None, 0), ("FOPR", None, 0),
                                    ("AARQ", None, 10), ("RGPT", None, 1)])

        node1 = case.smspec_node("FOPT")
        self.assertEqual(node1.varType(), EclSumVarType.ECL_SMSPEC_FIELD_VAR)

        node2 = case.smspec_node("AARQ:10")
        self.assertEqual(node2.varType(), EclSumVarType.ECL_SMSPEC_AQUIFER_VAR)
        self.assertEqual(node2.getNum(), 10)

        node3 = case.smspec_node("RGPT:1")
        self.assertEqual(node3.varType(), EclSumVarType.ECL_SMSPEC_REGION_VAR)
        self.assertEqual(node3.getNum(), 1)
        self.assertTrue(node3.isTotal())

        self.assertLess(node1, node3)
        self.assertGreater(node2, node3)
        self.assertEqual(node1, node1)
        self.assertNotEqual(node1, node2)

        with self.assertRaises(TypeError):
            a = node1 < 1
Ejemplo n.º 2
0
    def test_solve(self):
        length = 100
        case = createEclSum("CSV", [("FOPT", None, 0), ("FOPR", None, 0),
                                    ("FGPT", None, 0)],
                            sim_length_days=length,
                            num_report_step=10,
                            num_mini_step=10,
                            func_table={
                                "FOPT": fopt,
                                "FOPR": fopr,
                                "FGPT": fgpt
                            })

        self.assert_solve(case)
Ejemplo n.º 3
0
    def test_identify_var_type(self):
        self.assertEnumIsFullyDefined( EclSumVarType , "ecl_smspec_var_type" , "lib/include/ert/ecl/smspec_node.h")
        self.assertEqual( EclSum.varType( "WWCT:OP_X") , EclSumVarType.ECL_SMSPEC_WELL_VAR )
        self.assertEqual( EclSum.varType( "RPR") , EclSumVarType.ECL_SMSPEC_REGION_VAR )
        self.assertEqual( EclSum.varType( "WNEWTON") , EclSumVarType.ECL_SMSPEC_MISC_VAR )
        self.assertEqual( EclSum.varType( "AARQ:4") , EclSumVarType.ECL_SMSPEC_AQUIFER_VAR )

        case = createEclSum("CSV" , [("FOPT", None , 0, "SM3") ,
                                     ("FOPR" , None , 0, "SM3/DAY"),
                                     ("AARQ" , None , 10, "???"),
                                    ("RGPT" , None  ,1, "SM3")])

        node1 = case.smspec_node( "FOPT" )
        self.assertEqual( node1.varType( ) , EclSumVarType.ECL_SMSPEC_FIELD_VAR )

        node2 = case.smspec_node( "AARQ:10" )
        self.assertEqual( node2.varType( ) , EclSumVarType.ECL_SMSPEC_AQUIFER_VAR )
        self.assertEqual( node2.getNum( ) , 10 )

        node3 = case.smspec_node("RGPT:1")
        self.assertEqual( node3.varType( ) , EclSumVarType.ECL_SMSPEC_REGION_VAR )
        self.assertEqual( node3.getNum( ) , 1 )
        self.assertTrue( node3.isTotal( ))

        self.assertLess( node1, node3 )
        self.assertGreater( node2, node3 )
        self.assertEqual( node1, node1 )
        self.assertNotEqual( node1, node2 )

        with self.assertRaises(TypeError):
            a = node1 < 1
Ejemplo n.º 4
0
class SumTest(EclTest):


    def test_mock(self):
        case = createEclSum("CSV" , [("FOPT", None , 0, "SM3") , ("FOPR" , None , 0, "SM3/DAY")])
        self.assertTrue("FOPT" in case)
        self.assertFalse("WWCT:OPX" in case)
Ejemplo n.º 5
0
def create_case(num_mini_step = 10, case = "CSV"):
    length = 100
    return createEclSum(case, [("FOPT", None , 0, "SM3") , ("FOPR" , None , 0, "SM3/DAY"), ("FGPT" , None , 0, "SM3")],
                        sim_length_days = length,
                        num_report_step = 10,
                        num_mini_step = num_mini_step,
                        func_table = {"FOPT" : fopt,
                                      "FOPR" : fopr ,
                                      "FGPT" : fgpt })
Ejemplo n.º 6
0
    def test_kw_vector(self):
        case1 = create_case()
        case2 = createEclSum("CSV" , [("FOPR", None , 0, "SM3/DAY") , ("FOPT" , None , 0, "SM3"), ("FWPT" , None , 0, "SM3")],
                             sim_length_days = 100,
                             num_report_step = 10,
                             num_mini_step = 10,
                             func_table = {"FOPT" : fopt,
                                           "FOPR" : fopr ,
                                           "FWPT" : fgpt })

        kw_list = EclSumKeyWordVector( case1 )
        kw_list.add_keyword("FOPT")
        kw_list.add_keyword("FGPT")
        kw_list.add_keyword("FOPR")

        t = case1.getDataStartTime( ) + datetime.timedelta( days = 43 );
        data = case1.get_interp_row( kw_list , t )
        for d1,d2 in zip(data, [ case1.get_interp("FOPT", date = t),
                                 case1.get_interp("FOPT", date = t),
                                 case1.get_interp("FOPT", date = t) ]):

            self.assertFloatEqual(d1,d2)

        tmp = []
        for key in kw_list:
            tmp.append(key)

        for (k1,k2) in zip(kw_list,tmp):
            self.assertEqual(k1,k2)

        kw_list2 = kw_list.copy(case2)
        self.assertIn("FOPT", kw_list2)
        self.assertIn("FOPR", kw_list2)
        self.assertIn("FGPT", kw_list2)
        data2 = case2.get_interp_row( kw_list2 , t )

        self.assertEqual(len(data2), 3)
        self.assertEqual(data[0], data2[0])
        self.assertEqual(data[2], data2[2])

        with TestAreaContext("sum_vector"):
            with cwrap.open("f1.txt","w") as f:
                case1.dumpCSVLine(t, kw_list, f)

            with cwrap.open("f2.txt", "w") as f:
                case2.dumpCSVLine(t,kw_list2,f)

            with open("f1.txt") as f:
                d1 = f.readline().split(",")

            with open("f2.txt") as f:
                d2 = f.readline().split(",")

            self.assertEqual(d1[0],d2[0])
            self.assertEqual(d1[2],d2[2])
            self.assertEqual(d2[1],"")
Ejemplo n.º 7
0
    def test_kw_vector(self):
        case1 = create_case()
        case2 = createEclSum("CSV" , [("FOPR", None , 0, "SM3/DAY") , ("FOPT" , None , 0, "SM3"), ("FWPT" , None , 0, "SM3")],
                             sim_length_days = 100,
                             num_report_step = 10,
                             num_mini_step = 10,
                             func_table = {"FOPT" : fopt,
                                           "FOPR" : fopr ,
                                           "FWPT" : fgpt })

        kw_list = EclSumKeyWordVector( case1 )
        kw_list.add_keyword("FOPT")
        kw_list.add_keyword("FGPT")
        kw_list.add_keyword("FOPR")

        t = case1.getDataStartTime( ) + datetime.timedelta( days = 43 );
        data = case1.get_interp_row( kw_list , t )
        for d1,d2 in zip(data, [ case1.get_interp("FOPT", date = t),
                                 case1.get_interp("FOPT", date = t),
                                 case1.get_interp("FOPT", date = t) ]):

            self.assertFloatEqual(d1,d2)

        tmp = []
        for key in kw_list:
            tmp.append(key)

        for (k1,k2) in zip(kw_list,tmp):
            self.assertEqual(k1,k2)

        kw_list2 = kw_list.copy(case2)
        self.assertIn("FOPT", kw_list2)
        self.assertIn("FOPR", kw_list2)
        self.assertIn("FGPT", kw_list2)
        data2 = case2.get_interp_row( kw_list2 , t )

        self.assertEqual(len(data2), 3)
        self.assertEqual(data[0], data2[0])
        self.assertEqual(data[2], data2[2])

        with TestAreaContext("sum_vector"):
            with cwrap.open("f1.txt","w") as f:
                case1.dumpCSVLine(t, kw_list, f)

            with cwrap.open("f2.txt", "w") as f:
                case2.dumpCSVLine(t,kw_list2,f)

            with open("f1.txt") as f:
                d1 = f.readline().split(",")

            with open("f2.txt") as f:
                d2 = f.readline().split(",")

            self.assertEqual(d1[0],d2[0])
            self.assertEqual(d1[2],d2[2])
            self.assertEqual(d2[1],"")
Ejemplo n.º 8
0
    def test_ecl_sum_vector_algebra(self):
        scalar = 0.78
        addend = 2.718281828459045

        # setup
        length = 100
        case = createEclSum("CSV", [("FOPT", None, 0), ("FOPR", None, 0),
                                    ("FGPT", None, 0)],
                            sim_length_days=length,
                            num_report_step=10,
                            num_mini_step=10,
                            func_table={
                                "FOPT": fopt,
                                "FOPR": fopr,
                                "FGPT": fgpt
                            })
        with self.assertRaises(KeyError):
            case.scaleVector("MISSING:KEY", scalar)
            case.shiftVector("MISSING:KEY", addend)
Ejemplo n.º 9
0
    def test_TIME_special_case(self):
        case = createEclSum("CSV" , [("FOPT", None , 0, "SM3") , ("FOPR" , None , 0, "SM3/DAY")])
        keys = case.keys()
        self.assertEqual( len(keys) , 2 )
        self.assertIn( "FOPT" , keys )
        self.assertIn( "FOPR" , keys )


        keys = case.keys(pattern = "*")
        self.assertEqual( len(keys) , 2 )
        self.assertIn( "FOPT" , keys )
        self.assertIn( "FOPR" , keys )
Ejemplo n.º 10
0
def create_case(case = "CSV", restart_case = None, restart_step = -1, data_start = None):
    length = 100
    return createEclSum(case , [("FOPT", None , 0, "SM3") , ("FOPR" , None , 0, "SM3/DAY"), ("FGPT" , None , 0, "SM3")],
                        sim_length_days = length,
                        num_report_step = 10,
                        num_mini_step = 10,
                        data_start = data_start,
                        func_table = {"FOPT" : fopt,
                                      "FOPR" : fopr ,
                                      "FGPT" : fgpt },
                        restart_case = restart_case,
                        restart_step = restart_step)
Ejemplo n.º 11
0
def create_case():
    length = 100
    return createEclSum("CSV", [("FOPT", None, 0), ("FOPR", None, 0),
                                ("FGPT", None, 0)],
                        sim_length_days=length,
                        num_report_step=10,
                        num_mini_step=10,
                        func_table={
                            "FOPT": fopt,
                            "FOPR": fopr,
                            "FGPT": fgpt
                        })
Ejemplo n.º 12
0
    def test_different_names(self):
        length = 100
        case = createEclSum("CSV", [("FOPT", None, 0), ("FOPR", None, 0),
                                    ("FGPT", None, 0)],
                            sim_length_days=length,
                            num_report_step=10,
                            num_mini_step=10,
                            func_table={
                                "FOPT": fopt,
                                "FOPR": fopr,
                                "FGPT": fgpt
                            })

        with TestAreaContext("sum_different"):
            case.fwrite()
            shutil.move("CSV.SMSPEC", "CSVX.SMSPEC")
            with self.assertRaises(IOError):
                case2 = EclSum.load("Does/not/exist", "CSV.UNSMRY")

            with self.assertRaises(IOError):
                case2 = EclSum.load("CSVX.SMSPEC", "CSVX.UNSMRY")

            case2 = EclSum.load("CSVX.SMSPEC", "CSV.UNSMRY")
            self.assert_solve(case2)
Ejemplo n.º 13
0
    def test_csv_export(self):
        case = createEclSum("CSV" , [("FOPT", None , 0, "SM3") , ("FOPR" , None , 0, "SM3/DAY")])
        sep = ";"
        with TestAreaContext("ecl/csv"):
            case.exportCSV( "file.csv" , sep = sep)
            self.assertTrue( os.path.isfile( "file.csv" ) )
            input_file = csv.DictReader( open("file.csv") , delimiter = sep )
            for row in input_file:
                self.assertIn("DAYS", row)
                self.assertIn("DATE", row)
                self.assertIn("FOPT", row)
                self.assertIn("FOPR", row)
                self.assertEqual( len(row) , 4 )
                break

            self.assertEqual(case.unit("FOPT"), "SM3")

        with TestAreaContext("ecl/csv"):
            case.exportCSV( "file.csv" , keys = ["FOPT"] , sep = sep)
            self.assertTrue( os.path.isfile( "file.csv" ) )
            input_file = csv.DictReader( open("file.csv") , delimiter=sep)
            for row in input_file:
                self.assertIn("DAYS", row)
                self.assertIn("DATE", row)
                self.assertIn("FOPT", row)
                self.assertEqual( len(row) , 3 )
                break



        with TestAreaContext("ecl/csv"):
            date_format = "%y-%m-%d"
            sep = ","
            case.exportCSV( "file.csv" , keys = ["F*"] , sep=sep , date_format = date_format)
            self.assertTrue( os.path.isfile( "file.csv" ) )
            with open("file.csv") as f:
                time_index = -1
                for line in f.readlines():
                    tmp = line.split( sep )
                    self.assertEqual( len(tmp) , 4)

                    if time_index >= 0:
                        d = datetime.datetime.strptime( tmp[1] , date_format )
                        self.assertEqual( case.iget_date( time_index ) , d )

                    time_index += 1
Ejemplo n.º 14
0
                            "FOPR": fopr,
                            "FGPT": fgpt
                        },
                        restart_case=restart_case,
                        restart_step=restart_step)


class SumTest(EclTest):
    def test_mock(self):
        case = createEclSum("CSV", [("FOPT", None, 0, "SM3"),
                                    ("FOPR", None, 0, "SM3/DAY")])
        self.assertTrue("FOPT" in case)
        self.assertFalse("WWCT:OPX" in case)

    def test_TIME_special_case(self):
        case = createEclSum("CSV", [("FOPT", None, 0, "SM3"),
                                    ("FOPR", None, 0, "SM3/DAY")])
        keys = case.keys()
        self.assertEqual(len(keys), 2)
        self.assertIn("FOPT", keys)
        self.assertIn("FOPR", keys)

        keys = case.keys(pattern="*")
        self.assertEqual(len(keys), 2)
        self.assertIn("FOPT", keys)
        self.assertIn("FOPR", keys)

    def test_identify_var_type(self):
        self.assertEnumIsFullyDefined(EclSumVarType, "ecl_smspec_var_type",
                                      "lib/include/ert/ecl/smspec_node.hpp")
        self.assertEqual(EclSum.varType("WWCT:OP_X"),
                         EclSumVarType.ECL_SMSPEC_WELL_VAR)
Ejemplo n.º 15
0
 def test_mock(self):
     case = createEclSum("CSV" , [("FOPT", None , 0, "SM3") , ("FOPR" , None , 0, "SM3/DAY")])
     self.assertTrue("FOPT" in case)
     self.assertFalse("WWCT:OPX" in case)
Ejemplo n.º 16
0
                        num_mini_step=10,
                        func_table={
                            "FOPT": fopt,
                            "FOPR": fopr,
                            "FGPT": fgpt
                        })


class SumTest(EclTest):
    def test_mock(self):
        case = createEclSum("CSV", [("FOPT", None, 0), ("FOPR", None, 0)])
        self.assertTrue("FOPT" in case)
        self.assertFalse("WWCT:OPX" in case)

    def test_TIME_special_case(self):
        case = createEclSum("CSV", [("FOPT", None, 0), ("FOPR", None, 0)])
        keys = case.keys()
        self.assertEqual(len(keys), 2)
        self.assertIn("FOPT", keys)
        self.assertIn("FOPR", keys)

        keys = case.keys(pattern="*")
        self.assertEqual(len(keys), 2)
        self.assertIn("FOPT", keys)
        self.assertIn("FOPR", keys)

    def test_identify_var_type(self):
        self.assertEnumIsFullyDefined(EclSumVarType, "ecl_smspec_var_type",
                                      "lib/include/ert/ecl/smspec_node.h")
        self.assertEqual(EclSum.varType("WWCT:OP_X"),
                         EclSumVarType.ECL_SMSPEC_WELL_VAR)