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"])
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)
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"])
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)
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)
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)
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)
#!/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)