コード例 #1
0
ファイル: test_sum_statoil.py プロジェクト: agchitu/ert
    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 )
コード例 #2
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 )
コード例 #3
0
ファイル: ecl_sum.py プロジェクト: bramirex/ert
    def timeRange(self , start = None , end = None , interval = "1Y", extend_end = True):
        (num , timeUnit) = TimeVector.parseTimeUnit( interval )

        if start is None:
            start = self.getDataStartTime( )
        if isinstance(start , datetime.date):
            start = datetime.datetime( start.year , start.month , start.day , 0 , 0 , 0 )
                
        if end is None:
            end = self.end_time
        if isinstance(end , datetime.date):
            end = datetime.datetime( end.year , end.month , end.day , 0 , 0 , 0 )
        
        if end < start:
            raise ValueError("Invalid time interval start after end")


        if not timeUnit == "d":
            year1 = start.year
            year2 = end.year
            month1 = start.month
            month2 = end.month
            day1 = start.day
            day2 = end.day
            if extend_end:
                if timeUnit == 'm':
                    if day2 > 1:
                        month2 += 1
                        if month2 == 13:
                            year2 += 1
                            month2 = 1
                elif timeUnit == "y":
                    month1 = 1
                    if year2 > 1 or day2 > 1:
                        year2 += 1
                        month2 = 1
            day1 = 1
            day2 = 1

            range_start = datetime.date( year1, month1 , day1)
            range_end =  datetime.date(year2 , month2 , day2)
                
        trange = TimeVector.createRegular(range_start , range_end , interval)

        # If the simulation does not start at the first of the month
        # the start value will be before the simulation start; we
        # manually shift the first element in the trange to the start
        # value; the same for the end of list.

        if trange[-1] < end:
            if extend_end:
                trange.appendTime( num , timeUnit )
            else:
                trange.append( end )

        if trange[0] < start:
            trange[0] = CTime(start)
                
        return trange
コード例 #4
0
    def timeRange(self, start=None, end=None, interval="1Y", extend_end=True):
        (num, timeUnit) = TimeVector.parseTimeUnit(interval)

        if start is None:
            start = self.getDataStartTime()
        if isinstance(start, datetime.date):
            start = datetime.datetime(start.year, start.month, start.day, 0, 0,
                                      0)

        if end is None:
            end = self.end_time
        if isinstance(end, datetime.date):
            end = datetime.datetime(end.year, end.month, end.day, 0, 0, 0)

        if end < start:
            raise ValueError("Invalid time interval start after end")

        if not timeUnit == "d":
            year1 = start.year
            year2 = end.year
            month1 = start.month
            month2 = end.month
            day1 = start.day
            day2 = end.day
            if extend_end:
                if timeUnit == 'm':
                    if day2 > 1:
                        month2 += 1
                        if month2 == 13:
                            year2 += 1
                            month2 = 1
                elif timeUnit == "y":
                    month1 = 1
                    if year2 > 1 or day2 > 1:
                        year2 += 1
                        month2 = 1
            day1 = 1
            day2 = 1

            range_start = datetime.date(year1, month1, day1)
            range_end = datetime.date(year2, month2, day2)

        trange = TimeVector.createRegular(range_start, range_end, interval)

        # If the simulation does not start at the first of the month
        # the start value will be before the simulation start; we
        # manually shift the first element in the trange to the start
        # value; the same for the end of list.

        if trange[-1] < end:
            if extend_end:
                trange.appendTime(num, timeUnit)
            else:
                trange.append(end)

        if trange[0] < start:
            trange[0] = CTime(start)

        return trange
コード例 #5
0
ファイル: test_vectors.py プロジェクト: YingfangZhou/ert
    def test_contains_time(self):        
        start = datetime.datetime(2010 , 1 , 1 , 0,0,0)
        end = datetime.datetime(2010 , 2 , 1 , 0,0,0)
        other = datetime.datetime(2010 , 1 , 15 , 0,0,0)
        
        tv = TimeVector()
        tv.append( start )
        tv.append( end )

        self.assertTrue( start in tv )
        self.assertTrue( end in tv )
        self.assertTrue( other not in tv)
コード例 #6
0
ファイル: ecl_sum.py プロジェクト: jonerduarte/ert
    def timeRange(self , start = None , end = None , interval = "1Y", extend_end = True):
        (num , timeUnit) = TimeVector.parseTimeUnit( interval )

        if start is None:
            start = self.getDataStartTime( )
        if isinstance(start , datetime.date):
            start = datetime.datetime( start.year , start.month , start.day , 0 , 0 , 0 )
                
        if end is None:
            end = self.end_time
        if isinstance(end , datetime.date):
            end = datetime.datetime( end.year , end.month , end.day , 0 , 0 , 0 )
        
        if end < start:
            raise ValueError("Invalid time interval start after end")


        if not timeUnit == "d":
            year1 = start.year
            year2 = end.year
            month1 = start.month
            month2 = end.month
            day1 = start.day
            day2 = end.day
            if extend_end:
                if timeUnit == 'm':
                    if day2 > 1:
                        month2 += 1
                        if month2 == 13:
                            year2 += 1
                            month2 = 1
                elif timeUnit == "y":
                    month1 = 1
                    if year2 > 1 or day2 > 1:
                        year2 += 1
                        month2 = 1
            day1 = 1
            day2 = 1

            start = datetime.date( year1, month1 , day1)
            end =  datetime.date(year2 , month2 , day2)
                
        trange = TimeVector.createRegular(start , end , interval)
        if trange[-1] < end:
            if extend_end:
                trange.appendTime( num , timeUnit )
            else:
                trange.append( end )

        return trange
コード例 #7
0
ファイル: test_vectors.py プロジェクト: blattms/ert
    def test_time_vector(self):
        time_vector = TimeVector()

        time1 = ctime(datetime(2013, 8, 13, 0, 0, 0))
        time2 = ctime(datetime(2013, 8, 13, 1, 0, 0))

        time_vector.default = time2

        time_vector.append(time1)
        time_vector[2] = time2

        self.assertEqual(time_vector[0], time1)
        self.assertEqual(time_vector[1], time2)
        self.assertEqual(time_vector[2], time2)
コード例 #8
0
    def timeRange(self , start = None , end = None , interval = "1Y", extend_end = True):
        (num , timeUnit) = TimeVector.parseTimeUnit( interval )

        if start is None:
            start = self.start_time
        if isinstance(start , datetime.date):
            start = datetime.datetime( start.year , start.month , start.day , 0 , 0 , 0 )
                
        if end is None:
            end = self.end_time
        if isinstance(end , datetime.date):
            end = datetime.datetime( end.year , end.month , end.day , 0 , 0 , 0 )
        
        if end < start:
            raise ValueError("Invalid time interval start after end")


        if not timeUnit == "d":
            year1 = start.year
            year2 = end.year
            month1 = start.month
            month2 = end.month
            day1 = start.day
            day2 = end.day
            if extend_end:
                if timeUnit == 'm':
                    if day2 > 1:
                        month2 += 1
                        if month2 == 13:
                            year2 += 1
                            month2 = 1
                elif timeUnit == "y":
                    month1 = 1
                    if year2 > 1 or day2 > 1:
                        year2 += 1
                        month2 = 1
            day1 = 1
            day2 = 1

            start = datetime.date( year1, month1 , day1)
            end =  datetime.date(year2 , month2 , day2)
                
        trange = TimeVector.createRegular(start , end , interval)
        if trange[-1] < end:
            if extend_end:
                trange.appendTime( num , timeUnit )
            else:
                trange.append( end )

        return trange
コード例 #9
0
    def test_contains_time(self):
        start = datetime.datetime(2010, 1, 1, 0, 0, 0)
        end = datetime.datetime(2010, 2, 1, 0, 0, 0)
        other = datetime.datetime(2010, 1, 15, 0, 0, 0)

        tv = TimeVector()
        tv.append(start)
        tv.append(end)

        self.assertTrue(start in tv)
        self.assertTrue(end in tv)
        self.assertTrue(other not in tv)
コード例 #10
0
ファイル: test_vectors.py プロジェクト: YingfangZhou/ert
    def test_time_vector(self):
        time_vector = TimeVector()

        time1 = CTime(datetime.datetime(2013, 8, 13, 0, 0, 0))
        time2 = CTime(datetime.datetime(2013, 8, 13, 1, 0, 0))

        time_vector.setDefault(time2)

        time_vector.append(time1)
        time_vector[2] = time2

        self.assertEqual(time_vector[0], time1)
        self.assertEqual(time_vector[1], time2)
        self.assertEqual(time_vector[2], time2)

        tv1 = TimeVector( default_value = datetime.date( 2000 , 1,1) , initial_size = 2)
        self.assertEqual( tv1[0] , datetime.date(2000,1,1))

        tv2 = TimeVector()
        tv2.append( time2 )
        print tv2
コード例 #11
0
    def test_time_vector_regular(self):
        start = datetime.datetime(2010, 1, 1, 0, 0, 0)
        end = datetime.datetime(2010, 2, 1, 0, 0, 0)

        with self.assertRaises(ValueError):
            trange = TimeVector.createRegular(end, start, "1X")

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular(start, end, "1X")

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular(start, end, "1")

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular(start, end, "X")

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular(start, end, "1.5Y")

        trange = TimeVector.createRegular(start, end, "d")
        trange = TimeVector.createRegular(start, end, "D")
        trange = TimeVector.createRegular(start, end, "1d")
        self.assertEqual(trange[0].datetime(), start)
        self.assertEqual(trange[-1].datetime(), end)
        date = start
        delta = datetime.timedelta(days=1)
        for t in trange:
            self.assertEqual(t, date)
            date += delta

        end = datetime.datetime(2010, 1, 10, 0, 0, 0)
        trange = TimeVector.createRegular(start, end, "2d")
        self.assertEqual(trange[-1].datetime(),
                         datetime.datetime(2010, 1, 9, 0, 0, 0))
        self.assertEqual(5, len(trange))

        end = datetime.datetime(2012, 1, 10, 0, 0, 0)
        trange = TimeVector.createRegular(start, end, "3M")
        self.assertTrue(trange[-1] == datetime.datetime(2012, 1, 1, 0, 0, 0))
        self.assertTrue(trange[1] == datetime.datetime(2010, 4, 1, 0, 0, 0))
        self.assertTrue(trange[2] == datetime.datetime(2010, 7, 1, 0, 0, 0))
        self.assertTrue(trange[3] == datetime.datetime(2010, 10, 1, 0, 0, 0))
        self.assertTrue(trange[4] == datetime.datetime(2011, 1, 1, 0, 0, 0))

        start = datetime.datetime(1980, 1, 1, 0, 0, 0)
        end = datetime.datetime(2020, 1, 1, 0, 0, 0)
        trange = TimeVector.createRegular(start, end, "2Y")
        for (y, t) in zip(xrange(1980, 2022, 2), trange):
            self.assertTrue(t == datetime.datetime(y, 1, 1, 0, 0, 0))

        trange = TimeVector.createRegular(start, datetime.date(2050, 1, 1),
                                          "1Y")
コード例 #12
0
    def test_time_vector(self):
        time_vector = TimeVector()

        time1 = CTime(datetime.datetime(2013, 8, 13, 0, 0, 0))
        time2 = CTime(datetime.datetime(2013, 8, 13, 1, 0, 0))

        time_vector.setDefault(time2)

        time_vector.append(time1)
        time_vector[2] = time2

        self.assertEqual(time_vector[0], time1)
        self.assertEqual(time_vector[1], time2)
        self.assertEqual(time_vector[2], time2)

        tv1 = TimeVector(default_value=datetime.date(2000, 1, 1),
                         initial_size=2)
        self.assertEqual(tv1[0], datetime.date(2000, 1, 1))

        tv2 = TimeVector()
        tv2.append(time2)
        print tv2
コード例 #13
0
ファイル: test_vectors.py プロジェクト: YingfangZhou/ert
    def test_time_vector_regular(self):
        start = datetime.datetime(2010 , 1 , 1 , 0,0,0)
        end = datetime.datetime(2010 , 2 , 1 , 0,0,0)

        with self.assertRaises(ValueError):
            trange = TimeVector.createRegular( end , start , "1X" )

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular( start , end , "1X" )

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular( start , end , "1" )

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular( start , end , "X" )

        with self.assertRaises(TypeError):
            trange = TimeVector.createRegular( start , end , "1.5Y" )

        trange = TimeVector.createRegular(start , end , "d")
        trange = TimeVector.createRegular(start , end , "D")
        trange = TimeVector.createRegular(start , end , "1d")
        self.assertEqual( trange[0].datetime()  , start )
        self.assertEqual( trange[-1].datetime() , end )
        date = start
        delta = datetime.timedelta(days = 1)
        for t in trange:
            self.assertEqual(t ,  date)
            date += delta
        
        
        end = datetime.datetime(2010 , 1 , 10 , 0,0,0)
        trange = TimeVector.createRegular(start , end , "2d")
        self.assertEqual(  trange[-1].datetime() ,  datetime.datetime(2010 , 1 , 9 , 0,0,0))
        self.assertEqual( 5 , len(trange))
        

        end = datetime.datetime(2012 , 1 , 10 , 0,0,0)
        trange = TimeVector.createRegular(start , end , "3M")
        self.assertTrue( trange[-1] == datetime.datetime(2012 , 1 , 1 , 0,0,0))
        self.assertTrue( trange[1]  == datetime.datetime(2010 , 4  , 1 , 0,0,0))
        self.assertTrue( trange[2]  == datetime.datetime(2010 , 7  , 1 , 0,0,0))
        self.assertTrue( trange[3]  == datetime.datetime(2010 , 10 , 1 , 0,0,0))
        self.assertTrue( trange[4]  == datetime.datetime(2011 , 1 , 1 , 0,0,0))

        start = datetime.datetime(1980 , 1 , 1 , 0,0,0)
        end = datetime.datetime(2020 , 1 , 1 , 0,0,0)
        trange = TimeVector.createRegular(start , end , "2Y")
        for (y,t) in zip(xrange(1980,2022,2) , trange):
            self.assertTrue( t == datetime.datetime(y,1,1,0,0,0) )

        trange = TimeVector.createRegular(start , datetime.date(2050, 1 , 1) , "1Y")