HyQD / coupled-cluster

Upstream coupled cluster code
MIT License
3 stars 3 forks source link

Explicit symmetrization/hermitization of one-body density matrix #18

Closed Schoyen closed 3 years ago

Schoyen commented 5 years ago

As of now the compute_one_body_density_matrix functions return the one-body density matrix as the matrix elements of a pair of creation and annihilation operators. A perhaps more "correct" one-body density matrix is achieved by the indefinite inner product as defined by Thomas & Simen where we force the one-body density matrix to be symmetric/Hermitian.

We can achieve this by:

rho_qp = compute_one_body_density_matrix()
rho_sym = 0.5 * (rho_qp + rho_qp.conj().T)

The question is thus: should we implement this as the default solution when callers request the one-body density matrix from the CC-classes? Alternatively a parameter can be added to allow for toggling between both methods.

tbpedersen commented 5 years ago

I think it makes sense to have both options.

On Oct 2, 2019 13:41, Øyvind Sigmundson Schøyen notifications@github.com wrote:

As of now the compute_one_body_density_matrix functions return the one-body density matrix as the matrix elements of a pair of creation and annihilation operators. A perhaps more "correct" one-body density matrix is achieved by the indefinite inner product as defined by Thomas & Simenhttps://aip.scitation.org/doi/full/10.1063/1.5085390 where we force the one-body density matrix to be symmetric/Hermitian.

We can achieve this by:

rho_qp = compute_one_body_density_matrix() rho_sym = 0.5 * (rho_qp + rho_qp.conj().T)

The question is thus: should we implement this as the default solution when callers request the one-body density matrix from the CC-classes? Alternatively a parameter can be added to allow for toggling between both methods.

- You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/Schoyen/coupled-cluster/issues/18?email_source=notifications&email_token=ABB5SNQXOSST5LWAZEMRNIDQMSCFBA5CNFSM4I4VGTO2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPDKJYA, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABB5SNW5CVOPBWK3MXYUL53QMSCFBANCNFSM4I4VGTOQ.

Schoyen commented 3 years ago

This has been implemented in the functions compute_one_body_expectation_value as seen in cc.py, tdcc.py, and in oatdcc.py. Fixed in e098d5db1feb3425b2c95584a41a36abbdcf3e07.