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.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions