Exemple #1
0
    def test_regularProduction(self):
        sum = EclSum(self.case)
        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular( sum.start_time , sum.end_time , "1M" )
            prod = sum.blockedProduction("FOPR" , trange)
            
        with self.assertRaises(KeyError):
            trange = TimeVector.createRegular( sum.start_time , sum.end_time , "1M" )
            prod = sum.blockedProduction("NoNotThis" , trange)

        trange = sum.timeRange(interval = "2Y")
        self.assertTrue( trange[0]  == datetime.date( 2000 , 1 , 1 ))
        self.assertTrue( trange[-1] == datetime.date( 2006 , 1 , 1 ))

        trange = sum.timeRange(interval = "5Y")
        self.assertTrue( trange[0]  == datetime.date( 2000 , 1 , 1 ))
        self.assertTrue( trange[-1] == datetime.date( 2005 , 1 , 1 ))
        
        trange = sum.timeRange(interval = "6M")
        wprod1 = sum.blockedProduction("WOPT:OP_1" , trange)
        wprod2 = sum.blockedProduction("WOPT:OP_2" , trange)
        wprod3 = sum.blockedProduction("WOPT:OP_3" , trange)
        wprod4 = sum.blockedProduction("WOPT:OP_4" , trange)
        wprod5 = sum.blockedProduction("WOPT:OP_5" , trange)
    
        fprod = sum.blockedProduction("FOPT" , trange)
        gprod = sum.blockedProduction("GOPT:OP" , trange)
        wprod = wprod1 + wprod2 + wprod3 + wprod4 + wprod5
        for (w,f,g) in zip(wprod, fprod,gprod):
            self.assertFloatEqual( w , f )
            self.assertFloatEqual( w , g )
Exemple #2
0
    def test_eval(self):
        npv = EclNPV(self.case)
        npv.compile("[FOPT]")
        npv1 = npv.evalNPV()

        npv2 = 0
        sum = EclSum(self.case)
        trange = sum.timeRange()
        fopr = sum.blockedProduction("FOPT" , trange)
        for v in fopr:
            npv2 += v
        self.assertAlmostEqual( npv1 , npv2 )
        
        npv.compile("[FOPT] - 0.5*[FOPT] - 0.5*[FOPT]")
        npv1 = npv.evalNPV()
        self.assertTrue( abs(npv1) < 1e-2 )

        npv.compile("[WOPT:OP_1] - 0.5*[WOPT:OP_1] - 0.5*[WOPT:OP_1]")
        npv1 = npv.evalNPV()
        self.assertTrue( abs(npv1) < 1e-2 )
Exemple #3
0
              "2014-12-01": 59.29,
              "2015-01-01": 47.22,
              "2015-02-01": 50.58,
              "2015-03-01": 47.82,
              "2015-04-01": 54.45,
              "2015-05-01": 59.27,
              "2015-06-01": 59.82,
              "2015-07-01": 50.90,
              "2015-08-01": 42.87,
              "2015-09-01": 45.48}

if __name__ == '__main__':
    ecl_sum = EclSum("SNAKE_OIL_FIELD")
    start_time = ecl_sum.getStartTime()
    date_ranges = ecl_sum.timeRange(start_time, interval="1M")
    production_sums = ecl_sum.blockedProduction("FOPT", date_ranges)

    npv = 0.0
    for index in range(0, len(date_ranges) - 1):
        date = date_ranges[index + 1] # end of period
        production_sum = production_sums[index]

        oil_price = OIL_PRICES[date.date().strftime("%Y-%m-%d")]

        production_value = oil_price * production_sum
        npv += production_value

    with open("snake_oil_npv.txt", "w") as output_file:
        output_file.write("NPV %s\n" % npv)

        if npv < 80000:
Exemple #4
0
    "2015-01-01": 47.22,
    "2015-02-01": 50.58,
    "2015-03-01": 47.82,
    "2015-04-01": 54.45,
    "2015-05-01": 59.27,
    "2015-06-01": 59.82,
    "2015-07-01": 50.90,
    "2015-08-01": 42.87,
    "2015-09-01": 45.48
}

if __name__ == '__main__':
    ecl_sum = EclSum("SNAKE_OIL_FIELD")
    start_time = ecl_sum.getStartTime()
    date_ranges = ecl_sum.timeRange(start_time, interval="1M")
    production_sums = ecl_sum.blockedProduction("FOPT", date_ranges)

    npv = 0.0
    for index in range(0, len(date_ranges) - 1):
        date = date_ranges[index + 1]  # end of period
        production_sum = production_sums[index]

        oil_price = OIL_PRICES[date.date().strftime("%Y-%m-%d")]

        production_value = oil_price * production_sum
        npv += production_value

    with open("snake_oil_npv.txt", "w") as output_file:
        output_file.write("NPV %s\n" % npv)

        if npv < 80000: