PySCF
- class PySCF
This interface supports energy and gradient evaluations with the PySCF electronic structure package
A PySCF Theory object can be specified as follows:
my_frag = Fragment(...)
my_theory = PySCF(frag=my_frag,
method="hf",
basis='3-21g'
...)
or for DFT:
from pyscf.dft import DFT
my_frag = Fragment(...)
my_theory = PySCF(frag=my_frag,
method="dft",
basis='3-21g'
...)
Alternatively, ChemShell supports passing pyscf methods directly:
from pyscf.scf import RHF
my_frag = Fragment(...)
my_theory = PySCF(frag=my_frag,
method=RHF,
basis='3-21g'
...)
or for DFT:
from pyscf.dft import DFT
my_frag = Fragment(...)
my_theory = PySCF(frag=my_frag,
method=DFT,
basis='3-21g'
...)
which would then be called as theory=my_theory
in subsequent tasks.
Method options
- gridsize
(default:
5
) DFT integration grid size [0 (very sparse) -9 (very dense)] (See PySCF’s dft user manual for more details)
- fcidump
(default:
False
) Boolean flag determining if an FCIDUMP file should be written.
Basis set options
- basis
Input basis set to use in PySCF
SCF options
- convergence
(default:
1e-8
) Convergence criteria for SCF procedure.
- scftype
(default:
"rhf"
) Determines which scftype to use (supported:"rhf"
,"uhf"
,"rohf"
). Ifmethod
is set explicitly as a pyscf class (i.e.method=pyscf.scf.RHF
) then this option is ignored.
Interacting with PySCF directly
The user can interact directly with PySCF in chemshell via the method_pyscf
attribute (e.g):
from chemsh import *
water = Fragment(coords="water.cjson")
pyscf = PySCF(frag=water, method="dft", functional="blyp", basis="3-21g")
# We can now change the initial guess as described in the pyscf user documentation
pyscf.method_pyscf.init_guess = "huckel"
sp = SP(theory=pyscf)
sp.run()
ecalc = sp.result.energy
Note
As the method_pyscf
allows the user fine-grained control of PySCF in ChemShell, users should take care as not all interactions between PySCF and ChemShell have been tested.