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")
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)
def __init__(self, seed_generator, *args, **kwargs): RandomProperty.__init__(self, seed_generator, *args, **kwargs)