I wrote a piece of code on RHF using Python a while back, and figured I'd extend it to also implement CNDO/2 (yes, I know it's old but I figured it'd be easier for me.)

The approximated Fock matrix elements, taken from the original paper, are as follows:

$$F_{\mu\mu} = U_{\mu\mu} + [(P_{AA} - Z_A) - 0.5(P_{\mu\mu}-1)]\gamma_{AA} + \sum_{B ≠ A}(P_{BB} - Z_B)\gamma_{AB} $$

$$F_{\mu\nu} = \beta_{AB}^0S_{\mu\nu} - 0.5P_{\mu\nu}\gamma_{AB}$$

where $U_{\mu\mu}$ is an empirical parameter measuring "orbital electronegativity", $P_{AA}$ measures the total electron population on atom $A$, and $P_{\mu\mu}$ measures the electron population of basis function $\mu$.

Unfortunately, I got quite unusual results (read: the lowest orbital energy being about $-50$ hartrees) when I tested this approximation on molecules like $\ce{CO2}$ or $\ce{H2O}$. (I used a STO-3G basis set from Basis Set Exchange).

For the population terms, I used the formula $$P_{\mu\mu} = 2\sum_{i, \mathrm{occ.}}c_{\mu i}^2$$


$$P_{\mu\nu} = 4\sum_{i, \mathrm{occ.}}c_{\mu i}c_{\nu i}S_{\mu\nu}$$

and accordingly defined $$P_{AA} = \sum_{\mu ∈ A}P_{\mu\mu}$$

Is there something wrong with my equations?

  • $\begingroup$ It may also help to include your python code if it isn't too long. Your error could just as easily be in the implementation rather than the underlying equations. $\endgroup$ – Tyberius Sep 15 '19 at 13:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.