qml.labs.trotter_error.vibronic_fragments

vibronic_fragments(states, modes, freqs, taylor_coeffs)[source]

Returns a list of fragments summing to a vibronic Hamiltonian.

Parameters
  • states (int) – the number of electronic states

  • modes (int) – the number of vibrational modes

  • freqs (ndarray) – the harmonic frequences

  • taylor_coeffs (Sequence[ndarray]) – a sequence containing the tensors of coefficients in the Taylor expansion

Returns

a list of RealspaceMatrix objects representing the fragments of the vibronic Hamiltonian

Return type

List[RealspaceMatrix]

Example

>>> from pennylane.labs.trotter_error import vibronic_fragments
>>> import numpy as np
>>> n_modes = 4
>>> n_states = 2
>>> r_state = np.random.RandomState(42)
>>> freqs = r_state.random(4)
>>> taylor_coeffs = [r_state.random(size=(n_states, n_states, )), r_state.random(size=(n_states, n_states, n_modes))]
>>> fragments = vibronic_fragments(n_states, n_modes, freqs, taylor_coeffs)
>>> for fragment in fragments:
>>>     fragment
RealspaceMatrix({(0, 0): RealspaceSum((RealspaceOperator(4, (), 0.15601864044243652), RealspaceOperator(4, ('Q',), phi[1][0, 0][idx0]), RealspaceOperator(4, ('Q', 'Q'), omega[idx0,idx1]))), (1, 1): RealspaceSum((RealspaceOperator(4, (), 0.8661761457749352), RealspaceOperator(4, ('Q',), phi[1][1, 1][idx0]), RealspaceOperator(4, ('Q', 'Q'), omega[idx0,idx1])))})
RealspaceMatrix({(0, 1): RealspaceSum((RealspaceOperator(4, (), 0.15599452033620265), RealspaceOperator(4, ('Q',), phi[1][0, 1][idx0]))), (1, 0): RealspaceSum((RealspaceOperator(4, (), 0.05808361216819946), RealspaceOperator(4, ('Q',), phi[1][1, 0][idx0])))})
RealspaceMatrix({(0, 0): RealspaceSum((RealspaceOperator(4, ('P', 'P'), omega[idx0,idx1]),)), (1, 1): RealspaceSum((RealspaceOperator(4, ('P', 'P'), omega[idx0,idx1]),))})