1#!/usr/bin/env python
2
3'''
4Set the default XC functional library to XCFun (https://github.com/dftlibs/xcfun)
5'''
6
7from pyscf import gto, dft, grad
8
9mol = gto.M(
10    atom = '''
11    F  0.   0.       0.
12    H  0.   0.       1.587 ''',
13    basis = 'ccpvdz')
14
15#
16# Scheme 1: Change ._numint of MF object for a single calculation.
17#
18mf = dft.RKS(mol)
19mf._numint.libxc = dft.xcfun
20mf.xc = 'b88,lyp'
21mf.kernel()
22mf.nuc_grad_method().run()
23
24mf.xc = 'scan'
25mf.kernel()
26
27#
28# Scheme 2: Change the default XC library globally.  All DFT calculations will
29# call xcfun for XC functional values.
30#
31dft.numint.NumInt.libxc = dft.xcfun
32mf = dft.RKS(mol)
33mf.xc = 'b88,lyp'
34mf.kernel()
35mf.nuc_grad_method().run()
36
37mf.xc = 'scan'
38mf.kernel()
39