Esempio n. 1
0
    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() )
Esempio n. 2
0
    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)
Esempio n. 4
0
    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)