from itertools import combinations print('Generating %d Full CI Determinants...' % (nDet)) t = time.time() detList = [] for alpha in combinations(range(nmo), ndocc): for beta in combinations(range(nmo), ndocc): detList.append(Determinant(alphaObtList=alpha, betaObtList=beta)) print('..finished generating determinants in %.3f seconds.\n' % (time.time() - t)) print('Generating Hamiltonian Matrix...') t = time.time() Hamiltonian_generator = HamiltonianGenerator(H, MO) Hamiltonian_matrix = Hamiltonian_generator.generateMatrix(detList) print('..finished generating Matrix in %.3f seconds.\n' % (time.time() - t)) print('Diagonalizing Hamiltonian Matrix...') t = time.time() e_fci, wavefunctions = np.linalg.eigh(Hamiltonian_matrix) print('..finished diagonalization in %.3f seconds.\n' % (time.time() - t)) fci_mol_e = e_fci[0] + mol.nuclear_repulsion_energy() print('# Determinants: % 16d' % (len(detList)))
from itertools import combinations print('Generating %d CIS singlet Determinants...' % (nDet_S + 1)) t = time.time() occList = [i for i in range(ndocc)] det_ref = Determinant(alphaObtList=occList, betaObtList=occList) detList = det_ref.generateSingleExcitationsOfDet(nmo) detList.append(det_ref) print('..finished generating determinants in %.3f seconds.\n' % (time.time() - t)) print('Generating Hamiltonian Matrix...') t = time.time() Hamiltonian_generator = HamiltonianGenerator(H, MO) Hamiltonian_matrix = Hamiltonian_generator.generateMatrix(detList) print('..finished generating Matrix in %.3f seconds.\n' % (time.time() - t)) print('Diagonalizing Hamiltonian Matrix...') t = time.time() e_cis, wavefunctions = np.linalg.eigh(Hamiltonian_matrix) print('..finished diagonalization in %.3f seconds.\n' % (time.time() - t)) print('# Determinants: % 16d' % (len(detList))) print('SCF energy: % 16.10f' % (scf_e))