1#!/usr/bin/env python
2
3'''
4Optimize molecular geometry within the environment of QM/MM charges.
5'''
6
7import numpy
8from pyscf import gto, scf, cc, qmmm
9
10mol = gto.M(atom='''
11C       1.1879  -0.3829 0.0000
12C       0.0000  0.5526  0.0000
13O       -1.1867 -0.2472 0.0000
14H       -1.9237 0.3850  0.0000
15H       2.0985  0.2306  0.0000
16H       1.1184  -1.0093 0.8869
17H       1.1184  -1.0093 -0.8869
18H       -0.0227 1.1812  0.8852
19H       -0.0227 1.1812  -0.8852
20            ''',
21            basis='3-21g')
22
23numpy.random.seed(1)
24coords = numpy.random.random((5,3)) * 10
25charges = (numpy.arange(5) + 1.) * -.001
26mf = qmmm.mm_charge(scf.RHF(mol), coords, charges)
27#mf.verbose=4
28#mf.kernel()
29mol1 = mf.Gradients().optimizer(solver='berny').kernel()
30# or
31#from pyscf.geomopt import berny_solver
32#mol1 = berny_solver.optimize(mf)
33
34mycc = cc.CCSD(mf)
35mol1 = mycc.Gradients().optimizer().kernel()
36# or
37#from pyscf.geomopt import geometric_solver
38#mol1 = geometric_solver.optimize(mycc)
39