def testLocalConfigurations(self): """ Test that the local configurations are correctly set up """ coordinates = numpy.array([[1.0,2.0,3.0], [2.3,5.5,3.2]]) elements1 = ["First", "Second"] elements2 = ["Second", "First"] # Construct the process. process = KMCProcess(coordinates, elements1, elements2, basis_sites=[9], rate_constant=1.0) # Get the local configurations out. c1 = process.localConfigurations()[0] c2 = process.localConfigurations()[1] # Construct the two reference local configurations. ref_c1 = KMCLocalConfiguration(coordinates, elements1, center=0) ref_c2 = KMCLocalConfiguration(coordinates, elements2, center=0) # Check coordinates. self.assertAlmostEqual( numpy.linalg.norm(c1.coordinates() - ref_c1.coordinates()), 0.0, 12 ) self.assertAlmostEqual( numpy.linalg.norm(c2.coordinates() - ref_c2.coordinates()), 0.0, 12 ) # Check types. self.assertAlmostEqual( c1.types(), ref_c1.types() ) self.assertAlmostEqual( c2.types(), ref_c2.types() )
def testLocalConfigurations(self): """ Test that the local configurations are correctly set up """ coordinates = numpy.array([[1.0, 2.0, 3.0], [2.3, 5.5, 3.2]]) elements1 = ["First", "Second"] elements2 = ["Second", "First"] # Construct the process. process = KMCProcess(coordinates, elements1, elements2, basis_sites=[9], rate_constant=1.0) # Get the local configurations out. c1 = process.localConfigurations()[0] c2 = process.localConfigurations()[1] # Construct the two reference local configurations. ref_c1 = KMCLocalConfiguration(coordinates, elements1, center=0) ref_c2 = KMCLocalConfiguration(coordinates, elements2, center=0) # Check coordinates. self.assertAlmostEqual( numpy.linalg.norm(c1.coordinates() - ref_c1.coordinates()), 0.0, 12) self.assertAlmostEqual( numpy.linalg.norm(c2.coordinates() - ref_c2.coordinates()), 0.0, 12) # Check types. self.assertAlmostEqual(c1.types(), ref_c1.types()) self.assertAlmostEqual(c2.types(), ref_c2.types())
def testBackend(self): """ Test that we can get a valid backend object out. """ # Construct with coordinate list. coords = [[1.0,2.0,3.4],[1.1,1.2,1.3]] types = ["A","B"] local_config = KMCLocalConfiguration(coordinates=coords, types=types, center=1) # Setup a possible types dict. possible_types = { "A" : 0, "B" : 1, "C" : 2, } # Get the backend. backend = local_config._backend(possible_types) # Check its type. self.assertTrue( isinstance(backend, Backend.Configuration) ) # Get the coordinates back out and check. cpp_coords = backend.coordinates() py_coords = local_config.coordinates() self.assertAlmostEqual( cpp_coords[0][0], py_coords[0][0], 10 ) self.assertAlmostEqual( cpp_coords[0][1], py_coords[0][1], 10 ) self.assertAlmostEqual( cpp_coords[0][2], py_coords[0][2], 10 ) # Get the types back out. cpp_types = list(backend.elements()) py_types = local_config.types() self.assertEqual(py_types, cpp_types)
def testMemberDataQuery(self): """ Check that the correct member data is stored and returned. """ # Setup the configuration. coords = [[1.0, 2.0, 3.0], [1.0, 1.0, 3.0], [3.0, 8.0, 9.0]] types = ["C", "B", "A"] local_config = KMCLocalConfiguration(coordinates=coords, types=types, center=1) # Define the reference data. ref_coords = numpy.array([[0.0, 1.0, 0.0], [0.0, 0.0, 0.0], [2.0, 7.0, 6.0]]) ref_types = [[(1, "C")], [(1, "B")], [(1, "A")]] # Check the coordinates. self.assertAlmostEqual( numpy.linalg.norm( local_config._KMCLocalConfiguration__coordinates - ref_coords), 0.0, 10) # self.assertAlmostEqual( numpy.linalg.norm(local_config.coordinates() - ref_coords), 0.0, 10) # Check the types. self.assertEqual(local_config._KMCLocalConfiguration__types, ref_types) # self.assertEqual(local_config.types(), ref_types)
def testBackend(self): """ Test that we can get a valid backend object out. """ # Construct with coordinate list. coords = [[1.0, 2.0, 3.4], [1.1, 1.2, 1.3]] types = ["A", "B"] local_config = KMCLocalConfiguration(coordinates=coords, types=types, center=1) # Setup a possible types dict. possible_types = { "A": 0, "B": 1, "C": 2, } # Get the backend. backend = local_config._backend(possible_types) # Check its type. self.assertTrue(isinstance(backend, Backend.Configuration)) # Get the coordinates back out and check. cpp_coords = backend.coordinates() py_coords = local_config.coordinates() self.assertAlmostEqual(cpp_coords[0][0], py_coords[0][0], 10) self.assertAlmostEqual(cpp_coords[0][1], py_coords[0][1], 10) self.assertAlmostEqual(cpp_coords[0][2], py_coords[0][2], 10) # Get the types back out. cpp_types = list(backend.elements()) py_types = local_config.types() self.assertEqual(py_types, cpp_types)
def testMemberDataQuery(self): """ Check that the correct member data is stored and returned. """ # Setup the configuration. coords = [[1.0,2.0,3.0],[1.0,1.0,3.0],[3.0,8.0,9.0]] types = ["C","B","A"] local_config = KMCLocalConfiguration(coordinates=coords, types=types, center=1) # Define the reference data. ref_coords = numpy.array([[0.0,1.0,0.0],[0.0,0.0,0.0],[2.0,7.0,6.0]]) ref_types = ["C","B","A"] # Check the coordinates. self.assertAlmostEqual(numpy.linalg.norm(local_config._KMCLocalConfiguration__coordinates - ref_coords), 0.0, 10) # self.assertAlmostEqual(numpy.linalg.norm(local_config.coordinates() - ref_coords), 0.0, 10) # Check the types. self.assertEqual(local_config._KMCLocalConfiguration__types, ref_types) # self.assertEqual(local_config.types(), ref_types)