Program Quill
I’ve recently updated a small, straightforward Hartree Fock program, primarily written in C, on my GitHub page. I primarily developed this code to understand how SCF/HF works.
The program is named after my pet hedgehog, Quill Riker.
You can find the code on my GitHub page at https://github.com/charliecpeterson/QUILL
This program utilizes PySCF and libcint to generate the 1e/2e integrals. It also employs the Eigen3 API for all matrix and linear algebra routines.
The input format is similar to NWChem. In the GitHub repository, there is a sample input file named input.inp
.
geometry
C -0.000000000000 0.000000000000 0.000000000000
H 1.183771681898 -1.183771681898 -1.183771681898
H 1.183771681898 1.183771681898 1.183771681898
H -1.183771681898 1.183771681898 -1.183771681898
H -1.183771681898 -1.183771681898 1.183771681898
end
basis
H S
3.387000E+01 6.068000E-03 0.000000E+00 0.000000E+00
5.095000E+00 4.530800E-02 0.000000E+00 0.000000E+00
1.159000E+00 2.028220E-01 0.000000E+00 0.000000E+00
3.258000E-01 5.039030E-01 1.000000E+00 0.000000E+00
1.027000E-01 3.834210E-01 0.000000E+00 1.000000E+00
H P
1.407000E+00 1.000000E+00 0.000000E+00
3.880000E-01 0.000000E+00 1.000000E+00
H D
1.057000E+00 1.0000000
C S
8.236000E+03 5.310000E-04 -1.130000E-04 0.000000E+00 0.000000E+00
1.235000E+03 4.108000E-03 -8.780000E-04 0.000000E+00 0.000000E+00
2.808000E+02 2.108700E-02 -4.540000E-03 0.000000E+00 0.000000E+00
7.927000E+01 8.185300E-02 -1.813300E-02 0.000000E+00 0.000000E+00
2.559000E+01 2.348170E-01 -5.576000E-02 0.000000E+00 0.000000E+00
8.997000E+00 4.344010E-01 -1.268950E-01 0.000000E+00 0.000000E+00
3.319000E+00 3.461290E-01 -1.703520E-01 0.000000E+00 0.000000E+00
9.059000E-01 3.937800E-02 1.403820E-01 1.000000E+00 0.000000E+00
3.643000E-01 -8.983000E-03 5.986840E-01 0.000000E+00 0.000000E+00
1.285000E-01 2.385000E-03 3.953890E-01 0.000000E+00 1.000000E+00
C P
1.871000E+01 1.403100E-02 0.000000E+00 0.000000E+00
4.133000E+00 8.686600E-02 0.000000E+00 0.000000E+00
1.200000E+00 2.902160E-01 0.000000E+00 0.000000E+00
3.827000E-01 5.010080E-01 1.000000E+00 0.000000E+00
1.209000E-01 3.434060E-01 0.000000E+00 1.000000E+00
C D
1.097000E+00 1.000000E+00 0.000000E+00
3.180000E-01 0.000000E+00 1.000000E+00
C F
7.610000E-01 1.0000000
end
scf
num_elec 10
end
Currently, the code accepts only three input blocks:
- geometry
- basis
- scf
The geometry and basis blocks closely resemble NWChem, with the basis set format being identical to NWChem.
The scf block accepts only num_elec. This code exclusively supports RHF. It works for single reference, closed-shell systems ONLY.
I have tested this program on several compounds, and the energy difference from PySCF results is about 10^-2 atomic units. More work is required.
I plan to use this program as a starting point for adding and testing new libraries to run computational chemistry methods, particularly for Exascale systems.
Feel free to contact me for more information!