示例#1
0
    def test_properties(self):
        prop = Property(name="Test Property", desc="This is a simple property.")

        self.assertEquals(prop.name, self.name)
        self.assertEquals(prop.desc, self.desc)

        self.assertEqual(prop.generate_values(), None)
        self.assertEqual(prop.update_seed(), None)

        mock_seed_generator = MockSeedGenerator(self.seed)
        random_prop = RandomProperty(seed_generator=mock_seed_generator,
                                     n=10,
                                     random_number_function=np.random.uniform,
                                     name="Random Property",
                                     desc="Test the random property")

        random_prop.generate_values(low=self.min, high=self.max)
        random_prop_values = list(random_prop.values)

        # reset the mock generator
        self.mock_generator.set_seed()
        mock_random_values = list(self.mock_generator.get_n_random_numbers(low=self.min, high=self.max))
        self.assertEquals(random_prop_values, mock_random_values)

        random_prop.calculate_property_statistics()
        self.assertAlmostEqual(random_prop.mean, np.mean(mock_random_values))

        regional_property = RegionalProperty(MockRegion(name="MockRegion"))
        self.assertEqual(regional_property.region.name, "MockRegion")
示例#2
0
    def test_oil_in_place_calculation(self):
        seed = 300
        n = 1
        model = Model("Simple Model", 666)

        area = RandomProperty(name="Area", n=n, random_number_function=mock_random)
        porosity = RandomProperty(name="Porosity", n=n, random_number_function=mock_random)
        sw = RandomProperty(name="Sw", n=n, random_number_function=mock_random)

        config = {"Region A": {"Area": {"value": 2.0},
                               "Porosity": {"value": 0.5},
                               "Sw": {"value": 0.1}},
                  "Region B": {"Area": {"value": 1.0},
                               "Porosity": {"value": 0.5},
                               "Sw": {"value": 0.1}}}

        #oil in place region a should be 2.0*0.5*(1-0.1) = 1.0*0.9 = 0.9
        #oil in place region b should be 1.0*0.5*(1-0.1) = 0.5*0.9 = 0.45

        model.add_property(area)
        model.add_property(porosity)
        model.add_property(sw)

        region_a = Region(name="Region A")
        region_b = Region(name="Region B")

        model.add_region(region_a)
        model.add_region(region_b)

        model.add_defined_properties_to_regions()

        model.run(config)

        model.add_regional_property("ooip", OriginalOilInPlace)
        for region_name, region in model.regions.items():
            if region_name is "Region A":
                self.assertAlmostEqual(np.sum(region.properties["ooip"].values), n*0.9, 4)


            else:
                self.assertAlmostEqual(np.sum(region.properties["ooip"].values), n*0.45, 4)
            region.properties["ooip"].calculate_property_statistics()
            self.assertNotEqual(region.properties["ooip"].p10, None)
            self.assertNotEqual(region.properties["ooip"].p50, None)
            self.assertNotEqual(region.properties["ooip"].p90, None)


        ooip = ModelOriginalOilInPlace(model)
        ooip.generate_values()

        self.assertAlmostEqual(np.sum(ooip.values), n*(0.9+0.45), 4)
        ooip.calculate_property_statistics()

        self.assertNotEqual(ooip.p10, None)
        self.assertNotEqual(ooip.p50, None)
        self.assertNotEqual(ooip.p90, None)
示例#3
0
    def test_properties(self):
        prop = Property(name="Test Property", desc="This is a simple property.")

        self.assertEquals(prop.name, self.name)
        self.assertEquals(prop.desc, self.desc)

        self.assertEqual(prop.generate_values(), None)
        self.assertEqual(prop.update_seed(), None)

        mock_seed_generator = MockSeedGenerator(self.seed)
        random_prop = RandomProperty(seed_generator=mock_seed_generator,
                                     n=10,
                                     random_number_function=np.random.uniform,
                                     name="Random Property",
                                     desc="Test the random property")

        random_prop.generate_values(low=self.min, high=self.max)
        random_prop_values = list(random_prop.values)

        # reset the mock generator
        self.mock_generator.set_seed()
        mock_random_values = list(self.mock_generator.get_n_random_numbers(low=self.min, high=self.max))
        self.assertEquals(random_prop_values, mock_random_values)

        random_prop.calculate_property_statistics()
        self.assertAlmostEqual(random_prop.mean, np.mean(mock_random_values))

        regional_property = RegionalProperty(MockRegion(name="MockRegion"))
        self.assertEqual(regional_property.region.name, "MockRegion")
示例#4
0
 def __init__(self, seed_generator, *args, **kwargs):
     RandomProperty.__init__(self, seed_generator, *args, **kwargs)
示例#5
0
 def __init__(self, seed_generator, *args, **kwargs):
     RandomProperty.__init__(self, seed_generator, *args, **kwargs)