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"). If method 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.