Skip to content

Implement the Hellman-Feynman finite difference test for CC methods. #96

Description

@haakoek

According to the (generalized) Hellman-Feynman theorem,

(d/da)<tilde_Psi|H(a)|Psi>|{a=a0} = <tilde_Psi|(d/da)H(a)|Psi>|{a=a0}.

In particular, if H(a) = H0+a*\hat{r} we have that

(d/da)<tilde_Psi|H(a)|Psi>|{a=a0} = <tilde_Psi|r|Psi>|{a=a0},
that is, the derivative of the energy

The derivative on the left-hand side can be estimated with a two-point central finite difference as

(d/da)<tilde_Psi|H(a)|Psi>|_{a=a0} approx (<tilde_Psi|H(a0+da)|Psi>-<tilde_Psi|H(a0-da)|Psi>)/(2*da) + O(da^2),

and compared to the expectation value of the position at the point a0. This provides a particular powerful test case since the CC energies are independent of the lambda-amplitudes at convergence, while on the other hand, CC expectation values depend on lambda. Also, if a0 neq 0, it effectively tests that an external perturbation (in the dipole approximation) is correctly implemented since both the energy and now depend on the perturbation.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions