Beispiel #1
0
    def test_non_existing_file(self):
        with self.assertRaises(IOError):
            bad_crystal_reader = AbinsModules.LoadCRYSTAL(
                input_dft_filename="NonExistingFile.txt")
            bad_crystal_reader.read_phonon_file()

        with self.assertRaises(ValueError):
            # noinspection PyUnusedLocal
            poor_crystal_reader = AbinsModules.LoadCRYSTAL(
                input_dft_filename=1)
Beispiel #2
0
    def _read_dft(self, filename=None):
        """
        Reads data from .phonon file.
        :param filename: name of file with phonon data (name + phonon)
        :return: phonon data
        """
        # 1) Read data
        crystal_reader = AbinsModules.LoadCRYSTAL(
            input_dft_filename=AbinsModules.AbinsTestHelpers.find_file(
                filename=filename + ".out"))

        data = self._get_reader_data(crystal_reader=crystal_reader)

        # test validData method
        self.assertEqual(True, crystal_reader._clerk._valid_hash())

        return data
Beispiel #3
0
    def _check_loader_data(self, correct_data=None, input_dft_filename=None):

        loader = AbinsModules.LoadCRYSTAL(
            input_dft_filename=AbinsModules.AbinsTestHelpers.find_file(
                input_dft_filename + ".out"))
        loaded_data = loader.load_formatted_data().extract()

        # k points
        correct_items = correct_data["datasets"]["k_points_data"]
        items = loaded_data["k_points_data"]

        for k in correct_items["frequencies"]:
            self.assertEqual(
                True,
                np.allclose(correct_items["frequencies"][k],
                            items["frequencies"][k]))
            self.assertEqual(
                True,
                np.allclose(correct_items["atomic_displacements"][k],
                            items["atomic_displacements"][k]))
            self.assertEqual(
                True,
                np.allclose(correct_items["k_vectors"][k],
                            items["k_vectors"][k]))
            self.assertEqual(correct_items["weights"][k], items["weights"][k])

        # atoms
        correct_atoms = correct_data["datasets"]["atoms_data"]
        atoms = loaded_data["atoms_data"]

        for item in range(len(correct_atoms)):

            self.assertEqual(correct_atoms["atom_%s" % item]["sort"],
                             atoms["atom_%s" % item]["sort"])
            self.assertAlmostEqual(correct_atoms["atom_%s" % item]["mass"],
                                   atoms["atom_%s" % item]["mass"],
                                   delta=0.00001)
            self.assertEqual(correct_atoms["atom_%s" % item]["symbol"],
                             atoms["atom_%s" % item]["symbol"])
            self.assertEqual(
                True,
                np.allclose(
                    np.array(correct_atoms["atom_%s" % item]["fract_coord"]),
                    atoms["atom_%s" % item]["fract_coord"]))