get_effective_hamiltonian_from_system

get_effective_hamiltonian_from_system(ket_tuple_list, system_pair, order=2, required_overlap=0.9, return_only_specified_order=False, unit=None)[source]
Overloads:
  • ket_tuple_list (Collection[‘KetPairLike’]), system_pair (SystemPair), order (int), required_overlap (float), return_only_specified_order (bool), unit (None) → tuple[‘PintArray’, ‘csr_matrix’]

  • ket_tuple_list (Collection[‘KetPairLike’]), system_pair (SystemPair), order (int), required_overlap (float), return_only_specified_order (bool), unit (str) → tuple[‘NDArray’, ‘csr_matrix’]

Parameters:
  • ket_tuple_list (Collection[KetPairReal | KetPairComplex | tuple[KetAtom, KetAtom] | Sequence[KetAtom]])

  • system_pair (SystemPairReal | SystemPairComplex)

  • order (int)

  • required_overlap (float)

  • return_only_specified_order (bool)

  • unit (str | None)

Return type:

tuple[ndarray[tuple[Any, …], dtype[Any]] | PlainQuantity[ndarray[tuple[Any, …], dtype[Any]]], csr_matrix]

Get the perturbative Hamiltonian at a desired order in Rayleigh-Schrödinger perturbation theory.

This function takes a list of tuples of ket states, which forms the basis of the model space in which the effective Hamiltonian is calculated. The whole Hamiltonian is taken from a pair system. The Hamiltonian of the pair system is assumed to be diagonal in the unperturbed Hamiltonian, all off-diagonal elements are assumed to belong to the perturbative term. The function also checks for resonances between all states and states in the model space.

Parameters:
  • ket_tuple_list (Collection[KetPairReal | KetPairComplex | tuple[KetAtom, KetAtom] | Sequence[KetAtom]]) – List of all pair states that span up the model space. The effective Hamiltonian is calculated for these states.

  • system_pair (SystemPairReal | SystemPairComplex) – Two-Atom-System, diagonal in the basis of the unperturbed Hamiltonian.

  • order (int) – Order up to which the perturbation theory is expanded. Support up to third order. Default is second order.

  • required_overlap (float) – If set, the code checks for validity of a perturbative treatment. Error is thrown if the perturbed eigenstate has less overlap than this value with the unperturbed eigenstate.

  • return_only_specified_order (bool) – If True, the returned effective Hamiltonian will only contain the specified order. Default is False, which returns the sum of all orders up to the specified order.

  • unit (str | None) – The unit to which to convert the result. Default None will return a pint quantity.

Returns:

  • Effective Hamiltonian as a \(m \times m\) matrix, where m is the length of ket_tuple_list.

  • Eigenvectors in perturbation theory due to interaction with states out of the model space, returned as a sparse matrix in compressed row format. Each row represents the corresponding eigenvector.

Raises:

ValueError – If a resonance between a state in the model space and a state not in the model space occurs.

Return type:

tuple[ndarray[tuple[Any, …], dtype[Any]] | PlainQuantity[ndarray[tuple[Any, …], dtype[Any]]], csr_matrix]