I've noted a curious thing with PySCF when updating the molecular orbital coefficients of the mean-field object. If one prints out the Fock matrix in the atomic basis (F_ao) from the mean_field, the values can differ once the mo_coeff has been updated.
The following is an extreme example:
from pyscf import gto, scf import numpy as np molecule = gto.Mole() geometry = """ O 0.000000 0.000000 0.000000 H 0.758602 0.000000 0.504284 H 0.758602 0.000000 -0.504284 """ molecule.atom = geometry molecule.basis = "3-21g" molecule.build() mean_field = scf.RHF(molecule) mean_field.scf() F_ao1 = mean_field.get_fock() mean_field.mo_coeff = np.loadtxt('0.txt') F_ao2 = mean_field.get_fock() for row in range(len(F_ao1[0])): for col in range (len(F_ao1[0])): m = print("{:10.6f}".format(F_ao1[row][col]), end = " ") print(m) print() for row in range(len(F_ao2[0])): for col in range (len(F_ao2[0])): m = print("{:10.6f}".format(F_ao2[row][col]), end = " ") print(m) print() where 0.txt is a file containing a 13x13 matrix with all elements 0.
I had assumed that the Fock matrix in the atomic basis would not be recalculated and was a stored object? Is there an explanation for this behaviour?
For reference, the output is:
---F_ao1--- -20.312687 -5.701111 -4.466295 0.000000 0.000000 0.036176 -0.000000 0.000000 0.007744 -0.589952 -1.509333 -0.589952 -1.509333 None -5.701111 -1.628973 -2.433482 0.000000 0.000000 0.057360 0.000000 0.000000 0.041249 -0.715556 -1.164825 -0.715556 -1.164825 None -4.466295 -2.433482 -2.132193 0.000000 0.000000 0.087107 0.000000 0.000000 0.196043 -0.702254 -1.079343 -0.702254 -1.079343 None 0.000000 0.000000 0.000000 0.329725 0.000000 -0.000000 -0.772527 0.000000 -0.000000 0.477856 0.266686 -0.477856 -0.266686 None 0.000000 0.000000 0.000000 0.000000 0.199071 0.000000 -0.000000 -0.799305 0.000000 0.000000 0.000000 -0.000000 -0.000000 None 0.036176 0.057360 0.087107 -0.000000 0.000000 0.270456 -0.000000 0.000000 -0.791339 0.385320 0.258909 0.385320 0.258909 None -0.000000 0.000000 0.000000 -0.772527 -0.000000 -0.000000 -0.228986 -0.000000 -0.000000 0.350672 0.173939 -0.350672 -0.173939 None 0.000000 0.000000 0.000000 0.000000 -0.799305 0.000000 -0.000000 -0.018129 0.000000 0.000000 0.000000 -0.000000 -0.000000 None 0.007744 0.041249 0.196043 -0.000000 0.000000 -0.791339 -0.000000 0.000000 -0.151176 0.286736 0.251041 0.286736 0.251041 None -0.589952 -0.715556 -0.702254 0.477856 0.000000 0.385320 0.350672 0.000000 0.286736 -0.114823 -0.639373 -0.132769 -0.341354 None -1.509333 -1.164825 -1.079343 0.266686 0.000000 0.258909 0.173939 0.000000 0.251041 -0.639373 -0.609333 -0.341354 -0.539374 None -0.589952 -0.715556 -0.702254 -0.477856 -0.000000 0.385320 -0.350672 -0.000000 0.286736 -0.132769 -0.341354 -0.114823 -0.639373 None -1.509333 -1.164825 -1.079343 -0.266686 -0.000000 0.258909 -0.173939 -0.000000 0.251041 -0.341354 -0.539374 -0.639373 -0.609333 None ---F_ao2--- -32.880976 -7.706070 -6.427702 0.000000 0.000000 0.024455 0.000000 0.000000 0.003460 -0.829238 -2.157992 -0.829238 -2.157992 None -7.706070 -10.178522 -8.072464 0.000000 0.000000 0.160239 0.000000 0.000000 0.096904 -1.784625 -3.309188 -1.784625 -3.309188 None -6.427702 -8.072464 -8.320350 0.000000 0.000000 0.152962 0.000000 0.000000 0.252444 -2.656440 -4.381549 -2.656440 -4.381549 None 0.000000 0.000000 0.000000 -8.774770 0.000000 -0.000000 -4.261563 0.000000 0.000000 1.468854 0.828412 -1.468854 -0.828412 None 0.000000 0.000000 0.000000 0.000000 -8.692929 0.000000 0.000000 -4.186167 0.000000 0.000000 0.000000 0.000000 0.000000 None 0.024455 0.160239 0.152962 -0.000000 0.000000 -8.742686 0.000000 0.000000 -4.232005 1.162911 0.707275 1.162911 0.707275 None 0.000000 0.000000 0.000000 -4.261563 0.000000 0.000000 -5.400436 0.000000 0.000000 2.523505 1.731794 -2.523505 -1.731794 None 0.000000 0.000000 0.000000 0.000000 -4.186167 0.000000 0.000000 -5.159485 0.000000 0.000000 0.000000 0.000000 0.000000 None 0.003460 0.096904 0.252444 0.000000 0.000000 -4.232005 0.000000 0.000000 -5.305976 1.995294 1.491102 1.995294 1.491102 None -0.829238 -1.784625 -2.656440 1.468854 0.000000 1.162911 2.523505 0.000000 1.995294 -4.947012 -3.548389 -0.288794 -1.280573 None -2.157992 -3.309188 -4.381549 0.828412 0.000000 0.707275 1.731794 0.000000 1.491102 -3.548389 -4.642069 -1.280573 -2.706780 None -0.829238 -1.784625 -2.656440 -1.468854 0.000000 1.162911 -2.523505 0.000000 1.995294 -0.288794 -1.280573 -4.947012 -3.548389 None -2.157992 -3.309188 -4.381549 -0.828412 0.000000 0.707275 -1.731794 0.000000 1.491102 -1.280573 -2.706780 -3.548389 -4.642069 None ```