コード例 #1
0
    def test_pw_document_init(self):
        document = PwDocument()
        self.assertIsInstance(PwDocument(), PwDocument)
        self.assertTrue(
            document.schema.url.endswith("qeschema/schemas/qes.xsd"))

        source = os.path.join(self.test_dir,
                              'resources/pw/Al001_relax_bfgs.xml')
        document = PwDocument(source)
        if platform.system() == 'Linux':
            self.assertEqual(document.filename, source)
        else:
            self.assertTrue(document.filename.endswith('Al001_relax_bfgs.xml'))
        self.assertTrue(
            document.schema.url.endswith(
                "qeschema/schemas/releases/qes_190719.xsd"))

        document = PwDocument(source, schema='qes.xsd')
        if platform.system() == 'Linux':
            self.assertEqual(document.filename, source)
        else:
            self.assertTrue(document.filename.endswith('Al001_relax_bfgs.xml'))
        self.assertTrue(
            document.schema.url.endswith("qeschema/schemas/qes.xsd"))

        source = os.path.join(self.test_dir, 'resources/pw/Al001_rlx_damp.xml')
        document = PwDocument(source)
        if platform.system() == 'Linux':
            self.assertEqual(document.filename, source)
        else:
            self.assertTrue(document.filename.endswith('Al001_rlx_damp.xml'))
        self.assertTrue(
            document.schema.url.endswith("qeschema/schemas/qes.xsd"))
コード例 #2
0
    def test_document_init(self):
        schema = os.path.join(self.schemas_dir, 'qes.xsd')

        document = XmlDocument(schema)
        self.assertIsInstance(document, XmlDocument)
        self.assertIsNone(document.root)
        self.assertIsNone(document.filename)
        self.assertIsNone(document.format)
        self.assertTrue(document.schema.url.endswith(schema))
        self.assertIsInstance(document.schema, XMLSchema)

        document = XmlDocument(schema=XMLSchema(schema))
        self.assertTrue(document.schema.url.endswith(schema))
        self.assertIsInstance(document.schema, XMLSchema)

        self.assertIsInstance(PwDocument(), PwDocument)
        self.assertIsInstance(PwDocument(schema=schema), PwDocument)

        schema = os.path.join(self.schemas_dir, 'ph_temp.xsd')
        self.assertIsInstance(PhononDocument(), PhononDocument)
        self.assertIsInstance(PhononDocument(schema=schema), PhononDocument)

        schema = os.path.join(self.schemas_dir, 'qes_neb.xsd')
        self.assertIsInstance(NebDocument(), NebDocument)
        self.assertIsInstance(NebDocument(schema=schema), NebDocument)

        schema = os.path.join(self.schemas_dir, 'tddfpt.xsd')
        self.assertIsInstance(TdDocument(), TdDocument)
        self.assertIsInstance(TdDocument(schema=schema), TdDocument)

        schema = os.path.join(self.schemas_dir, 'qes_spectrum.xsd')
        self.assertIsInstance(TdSpectrumDocument(), TdSpectrumDocument)
        self.assertIsInstance(TdSpectrumDocument(schema=schema),
                              TdSpectrumDocument)
コード例 #3
0
    def test_pw_output_get_ks_eigenvalues(self):
        xml_filename = os.path.join(self.test_dir, 'resources/pw/Ni.xml')
        document = PwDocument(source=xml_filename)

        ks_eigenvalues = document.get_ks_eigenvalues()

        self.assertEqual(len(ks_eigenvalues), 6)
        for row in ks_eigenvalues:
            self.assertEqual(len(row), 18)
            for value in row:
                self.assertIsInstance(value, float)
コード例 #4
0
    def test_pw_document(self):
        xml_filename = os.path.join(self.test_dir,
                                    'examples/pw/Al001_relax_bfgs.xml')
        document = PwDocument()

        document.read(xml_filename)
        self.assertTrue(hasattr(document.root, 'tag'))
        self.assertEqual(
            document.root.tag,
            '{http://www.quantum-espresso.org/ns/qes/qes-1.0}espresso')
        self.assertEqual(document.filename, xml_filename)
        self.assertEqual(document.format, 'xml')
        self.assertEqual(document.input_path, 'input')
        self.assertEqual(document.output_path, 'output')
コード例 #5
0
    def test_pw_output_get_k_points(self):
        xml_filename = os.path.join(self.test_dir, 'resources/pw/Ni.xml')
        document = PwDocument(source=xml_filename)

        k_points = document.get_k_points()
        expected = [
            [-0.1666666666666667, 0.1666666666666667, 0.1666666666666667],
            [0.5, -0.5, 0.8333333333333333],
            [0.1666666666666667, -0.1666666666666667, 0.5],
            [-0.1666666666666666, -1.166666666666667, 0.1666666666666666],
            [-0.4999999999999999, -0.8333333333333334, -0.1666666666666666],
            [0.5, -0.5, -0.5]
        ]
        self.assertListEqual(k_points, expected)
コード例 #6
0
    def test_exception_class(self):
        document = PwDocument()

        with self.assertRaises(XmlDocumentError):
            document.get_fortran_input()

        schema = os.path.join(self.schemas_dir, 'qes.xsd')
        document = TdSpectrumDocument(schema=schema)
        document.read(
            os.path.join(self.test_dir, 'resources/pw/Al001_relax_bfgs.xml'))

        with self.assertRaises(XmlDocumentError):
            document.get_fortran_input()
コード例 #7
0
    def test_init_with_schema_only(self):
        schema = os.path.join(self.schemas_dir, 'qes.xsd')
        document = PwDocument(schema=schema)
        self.assertIsInstance(document, PwDocument)
        self.assertTrue(
            document.schema.url.endswith("qeschema/schemas/qes.xsd"))

        document = PwDocument(schema='qes.xsd')
        self.assertIsInstance(document, PwDocument)
        self.assertTrue(
            document.schema.url.endswith("qeschema/schemas/qes.xsd"))

        document = PwDocument(schema='qes-20180511.xsd')
        self.assertIsInstance(document, PwDocument)
        self.assertTrue(
            document.schema.url.endswith(
                "qeschema/schemas/releases/qes-20180511.xsd"))
コード例 #8
0
 def test_init_from_xml_resource(self):
     xml_file = os.path.join(self.test_dir,
                             'resources/pw/CO_bgfs_relax.xml')
     document = PwDocument(source=XMLResource(xml_file))
     if platform.system() == 'Linux':
         self.assertEqual(document.filename, xml_file)
     else:
         self.assertTrue(document.filename.endswith('CO_bgfs_relax.xml'))
     self.assertTrue(
         document.schema.url.endswith("qeschema/schemas/qes.xsd"))
コード例 #9
0
    def test_pw_get_atomic_positions(self):
        source = os.path.join(self.test_dir,
                              'resources/pw/Al001_relax_bfgs.xml')
        document = PwDocument(source)
        positions = document.get_atomic_positions()
        self.assertIsNone(positions)

        source = os.path.join(self.test_dir, 'resources/pw/Ni.xml')
        document = PwDocument(source)
        positions = document.get_atomic_positions()
        self.assertEqual(positions, (['Ni'], [[0.0, 0.0, 0.0]]))
コード例 #10
0
    def test_incomplete_schema(self):
        schema_path = os.path.join(self.test_dir,
                                   'resources/dummy/incomplete.xsd')
        document = PwDocument(schema=schema_path)

        xml_filename = os.path.join(self.test_dir,
                                    'resources/dummy/incomplete.xml')
        document.read(xml_filename)

        with self.assertRaises(XmlDocumentError) as ctx:
            document.get_fortran_input()
        self.assertEqual(str(ctx.exception),
                         "Missing input './input' in XML data!")

        document.root.append(ElementTree.Element('input'))
        with self.assertRaises(XmlDocumentError) as ctx:
            document.get_fortran_input()
        self.assertEqual(str(ctx.exception),
                         "Missing input element in XSD schema!")
コード例 #11
0
    def test_pw_document(self):
        xml_filename = os.path.join(self.test_dir,
                                    'resources/pw/Al001_relax_bfgs.xml')
        document = PwDocument(source=xml_filename)

        self.assertTrue(hasattr(document.root, 'tag'))
        self.assertEqual(
            document.root.tag,
            '{http://www.quantum-espresso.org/ns/qes/qes-1.0}espresso')

        if platform.system() == 'Linux':
            self.assertEqual(document.filename, xml_filename)
        else:
            self.assertTrue(document.filename.endswith('Al001_relax_bfgs.xml'))

        self.assertEqual(document.format, 'xml')
        self.assertEqual(document.input_path, 'input')
        self.assertEqual(document.output_path, 'output')
コード例 #12
0
    def test_pw_get_cell_parameters(self):
        source = os.path.join(self.test_dir,
                              'resources/pw/Al001_relax_bfgs.xml')
        document = PwDocument(source)
        cells = document.get_cell_parameters()
        self.assertIsNone(cells)

        source = os.path.join(self.test_dir, 'resources/pw/Ni.xml')
        document = PwDocument(source)
        cells = document.get_cell_parameters()
        self.assertListEqual(
            cells,
            [[-3.325, 0.0, 3.325], [0.0, 3.325, 3.325], [-3.325, 3.325, 0.0]])
コード例 #13
0
    def test_fortran_input_generator(self):
        xml_filename = os.path.join(self.test_dir,
                                    'resources/pw/Al001_relax_bfgs.xml')
        document = PwDocument()
        document.read(xml_filename)

        self.assertFalse(os.path.isfile(self.output_file))

        document.write_fortran_input(self.output_file)
        with open(self.output_file) as f:
            fortran_input = f.read()

        if os.path.isfile(self.output_file):
            os.unlink(self.output_file)
        self.assertFalse(os.path.isfile(self.output_file))

        self.assertEqual(fortran_input[:9], '&CONTROL\n')
        self.assertEqual(fortran_input, document.get_fortran_input())
コード例 #14
0
    def test_pw_get_stress(self):
        source = os.path.join(self.test_dir,
                              'resources/pw/Al001_relax_bfgs.xml')
        document = PwDocument(source)
        stress = document.get_stress()
        self.assertIsNone(stress)

        source = os.path.join(self.test_dir, 'resources/pw/Si.xml')
        document = PwDocument(source)
        stress = document.get_stress()
        self.assertListEqual(
            stress, [[
                -1.825058728527109e-06, 1.058791184067875e-22,
                -1.058791184067875e-22
            ], [1.058791184067875e-22, -1.825058728527109e-06, 0.0],
                     [
                         -1.058791184067875e-22, 1.058791184067875e-22,
                         -1.825058728527109e-06
                     ]])
コード例 #15
0
    def test_pw_output_get_forces(self):
        xml_filename = os.path.join(self.test_dir, 'resources/pw/Si.xml')
        document = PwDocument(source=xml_filename)

        self.assertIsNone(document.get_forces())
コード例 #16
0
    def test_pw_output_get_total_energy(self):
        xml_filename = os.path.join(self.test_dir, 'resources/pw/Ni.xml')
        document = PwDocument(source=xml_filename)

        total_energy = document.get_total_energy()
        self.assertEqual(total_energy, -30.44558256272531)
コード例 #17
0
 def test_unsupported_schema(self):
     with self.assertRaises(NotImplementedError):
         PwDocument(schema=os.path.join(self.test_dir,
                                        'resources/dummy/schema.xsd'))
コード例 #18
0
 def test_init_with_schema_as_text(self):
     with open(os.path.join(self.schemas_dir, 'qes.xsd')) as fp:
         schema = fp.read()
     document = PwDocument(schema=schema)
     self.assertIsNone(document.schema.url)