Processing math: 100%

diagH_after_exc Interface

public interface diagH_after_exc

Evaluate the energy of a new determinant Dj quickly.

The calculation of a diagonal term of the hamiltonian, scales quadratically with the number of particles O(N2e). Often we start from a determinant Di, where we know the diagonal term, and excite to a new determinant Dj. Under this circumstance we can calculate the diagonal element of Dj in O(Ne) time.

In the following we will derive the necessary equations. We assume the notations and conventions of the “purple book” (Helgaker et al). The diagonal term for a determinant is given as Di|ˆH|Di=IDihII+12IDiJDi(gIIJJgIJJI)

We want to calculate Dj|ˆH|DjDi|ˆH|Di. Which we do by separately calculating the difference for the one- and two-electron term.

We can rewrite the one-electron term as: IDihII=IDiDjhII+IDiDjhII Which gives JDjhJJIDihII=JDjDihJJIDiDjhII=JtgthJJIsrchII

For the two electron term we define γIJ=(gIIJJgIJJI) and note the two properties γIJ=γJI γII=0

We write 12IDiJDiγIJ=12[IDiDjJDiDjγIJ+IDiDjJDiDjγIJ+IDiDjJDiDjγIJ+IDiDjJDiDjγIJ] =12[IDiDjJDiDjγIJ+2(IDiDjJDiDjγIJ)+IDiDjJDiDjγIJ] In the last equality we used γIJ=γJI.

For the difference we get: 12IDjJDjγIJ12IDiJDiγIJ=12[2(IDiDjJDjDiγIJ)+IDjDiJDjDiγIJ2(IDiDjJDiDjγIJ)IDiDjJDiDjγIJ] =IDiDj(JDjDiγIJJDiDjγIJ)+IDjDiJDjDi,I<JγIJIDiDjJDiDj,I<JγIJ =IDiDj(JtgtγIJJsrcγIJ)+ItgtJtgt,I<JγIJIsrcJsrc,I<JγIJ

In total we obtain Dj|ˆH|DjDi|ˆH|Di=JtgthJJIsrchII+IDiDj(JtgtγIJJsrcγIJ)+ItgtJtgt,I<JγIJIsrcJsrc,I<JγIJ


Contents


Dummy Procedures and Procedure Pointers

Type Attributes Name Initial
procedure(diagH_after_exc_1_t), pointer :: diagH_after_exc_1 => null()
procedure(diagH_after_exc_2_t), pointer :: diagH_after_exc_2 => null()
procedure(diagH_after_exc_3_t), pointer :: diagH_after_exc_3 => null()