qiskit-algorithms icon indicating copy to clipboard operation
qiskit-algorithms copied to clipboard

[from qiskit] Add transition amplitude calculations on NumpyEigensolver

Open ElePT opened this issue 1 year ago • 1 comments

What should we add?

Currently, the NumpyEigensolver implements a _eval_aux_operators which evaluates the auxiliary operators on the excited states. Without much effort and using an equality in the form of Eq. 13 in https://doi.org/10.1103%2Fphysrevresearch.3.023244, we can extend it to evaluate transition amplitudes for the same auxiliary operators between two eigenstates of the Hamiltonian. This would allow, among other, the evaluation of non-adiabatic couplings between the excited states (see in the same article).

The idea would be to have a static method for two fixed eigenstates:

@staticmethod
def _eval_transition_amplitudes(
    aux_operators: ListOrDict[OperatorBase], wavefn, wavefm, threshold: float = 1e-12
) -> ListOrDict[Tuple[complex, complex]]:

which would be called by a higher level method for a Dict of pairs (i, j)

def compute_transition_amplitudes(
    self,
    aux_operators: Optional[ListOrDict[OperatorBase]],
    transition_amplitude_pairs: Optional[Dict[Tuple[int, int]]]
) -> Optional[ListOrDict[Tuple[complex, complex]]]:

ElePT avatar Aug 22 '23 09:08 ElePT