Esempio n. 1
0
    def setUp(self):
        tasks = [
            NwTask.dft_task(mol,
                            operation="optimize",
                            xc="b3lyp",
                            basis_set="6-31++G*"),
            NwTask.dft_task(mol,
                            operation="freq",
                            xc="b3lyp",
                            basis_set="6-31++G*"),
            NwTask.dft_task(mol,
                            operation="energy",
                            xc="b3lyp",
                            basis_set="6-311++G**"),
            NwTask.dft_task(mol,
                            charge=mol.charge + 1,
                            operation="energy",
                            xc="b3lyp",
                            basis_set="6-311++G**"),
            NwTask.dft_task(mol,
                            charge=mol.charge - 1,
                            operation="energy",
                            xc="b3lyp",
                            basis_set="6-311++G**")
        ]

        self.nwi = NwInput(mol,
                           tasks,
                           geometry_options=["units", "angstroms", "noautoz"],
                           memory_options="total 1000 mb")
        self.nwi_symm = NwInput(
            mol,
            tasks,
            geometry_options=["units", "angstroms", "noautoz"],
            symmetry_options=["c1"])
Esempio n. 2
0
    def get_nwinput(self, mol):
        functional = "b3lyp"
        geom_opt_bset = {}
        scf_bset = {}
        for el in mol.composition.elements:
            geom_opt_bset[el.symbol] = "6-31+g*"
            scf_bset[el.symbol] = "6-31++g**" if el.Z <= 18 else "6-31+g*"

        if len(mol) > 1:
            # Insert opt and freq job for molecules with more than one atom.
            tasks = [
                NwTask.dft_task(mol, operation="optimize", xc=functional,
                                basis_set=geom_opt_bset),
                NwTask.dft_task(mol, operation="freq", xc=functional,
                                basis_set=geom_opt_bset)
            ]
        else:
            tasks = []

        tasks.extend([
            NwTask.dft_task(mol, operation="energy", xc=functional,
                            basis_set=scf_bset),
            NwTask.dft_task(mol, charge=mol.charge + 1, operation="energy",
                            xc=functional, basis_set=scf_bset),
            NwTask.dft_task(mol, charge=mol.charge - 1, operation="energy",
                            xc=functional, basis_set=scf_bset)
        ])

        return NwInput(mol, tasks)
Esempio n. 3
0
    def setUp(self):
        tasks = [
            NwTask.dft_task(mol, operation="optimize", xc="b3lyp", basis_set="6-31++G*"),
            NwTask.dft_task(mol, operation="freq", xc="b3lyp", basis_set="6-31++G*"),
            NwTask.dft_task(mol, operation="energy", xc="b3lyp", basis_set="6-311++G**"),
            NwTask.dft_task(mol, charge=mol.charge + 1, operation="energy", xc="b3lyp", basis_set="6-311++G**"),
            NwTask.dft_task(mol, charge=mol.charge - 1, operation="energy", xc="b3lyp", basis_set="6-311++G**"),
        ]

        self.nwi = NwInput(
            mol, tasks, geometry_options=["units", "angstroms", "noautoz"], memory_options="total 1000 mb"
        )
        self.nwi_symm = NwInput(mol, tasks, geometry_options=["units", "angstroms", "noautoz"], symmetry_options=["c1"])
Esempio n. 4
0
    def test_dft_cosmo_task(self):
        task = NwTask.dft_task(
            mol,
            charge=mol.charge,
            operation="energy",
            xc="b3lyp",
            basis_set="6-311++G**",
            alternate_directives={"cosmo": {
                "dielec": 78.0
            }},
        )
        ans = """title "H4C1 dft energy"
charge 0
basis cartesian
 C library "6-311++G**"
 H library "6-311++G**"
end
dft
 mult 1
 xc b3lyp
end
cosmo
 dielec 78.0
end
task dft energy"""
        self.assertEqual(str(task), ans)
Esempio n. 5
0
    def test_dft_task(self):
        task = NwTask.dft_task(mol, charge=1, operation="energy")
        ans = """title "H4C1 dft energy"
charge 1
basis cartesian
 C library "6-31g"
 H library "6-31g"
end
dft
 mult 2
 xc b3lyp
end
task dft energy"""
        self.assertEqual(str(task), ans)
Esempio n. 6
0
    def test_dft_task(self):
        task = NwTask.dft_task(mol, charge=1, operation="energy")
        ans = """title "H4C1 dft energy"
charge 1
basis
 C library "6-31g"
 H library "6-31g"
end
dft
 mult 2
 xc b3lyp
end
task dft energy"""
        self.assertEqual(str(task), ans)
Esempio n. 7
0
    def test_dft_cosmo_task(self):
        task = NwTask.dft_task(
            mol, charge=mol.charge, operation="energy",
            xc="b3lyp", basis_set="6-311++G**",
            alternate_directives={'cosmo': {"dielec": 78.0}})
        ans = """title "H4C1 dft energy"
charge 0
basis
 C library "6-311++G**"
 H library "6-311++G**"
end
dft
 mult 1
 xc b3lyp
end
cosmo
 dielec 78.0
end
task dft energy"""
        self.assertEqual(str(task), ans)
Esempio n. 8
0
#!/usr/bin/env python
# coding: utf-8

from __future__ import division, print_function, unicode_literals, \
    absolute_import

from pymatgen import Molecule
from pymatgen.io.nwchem import NwInput, NwTask

coords = [[0.000000, 0.000000, 0.000000], [0.000000, 0.000000, 1.089000],
          [1.026719, 0.000000, -0.363000], [-0.513360, -0.889165, -0.363000],
          [-0.513360, 0.889165, -0.363000]]
mol = Molecule(["C", "H", "H", "H", "H"], coords)

tasks = [
    NwTask.dft_task(mol,
                    operation="optimize",
                    xc="b3lyp",
                    basis_set="6-31++G*"),
    NwTask.dft_task(mol, operation="freq", xc="b3lyp", basis_set="6-31++G*")
]
nwi = NwInput(mol, tasks)

print(nwi)