Skip to content

System found in Enhanced perturbative continuous unitary transformations: 10.1103/PhysRevB.86.125113

# Import sympt
from sympt import *
# Import sympy
import sympy as sp

Setup

# ---------------- Defining the symbols ------------------
# Order 0
omega = RDSymbol('omega', order=0, positive=True, real=True)
omega_tilde = RDSymbol(r'\tilde{\omega}', order=0, positive=True, real=True)
epsilon_0 = RDSymbol(r'varepsilon_0', order=0, positive=True, real=True)
epsilon_tilde = RDSymbol(r'\tilde{\varepsilon}', order=0, positive=True, real=True)
U = RDSymbol('U', order=0, positive=True, real=True)
# Order 1
x = RDSymbol('x', order=1, positive=True, real=True)

# ----------------- Defining the basis -------------------
# Boson basis resonator: Infinite bosonic Hilbert space
b = BosonOp('b')
bd = Dagger(b)

# -------------- Defining the Hamiltonian ----------------
# Unperturbed Hamiltonian H0
H0 = epsilon_0 + omega * bd * b 
# Perturbed block diagonal Hamiltonian
H1 = x * (omega_tilde * bd * b + U * bd * bd * b * b + epsilon_tilde)
# Block diagonal Hamiltonian
H = H0 + H1
display(H)
# Interaction Hamiltonian V
V = x * (bd**4 + b**4)
display(V)

\(\displaystyle \omega {b^\dagger} b + \varepsilon_{0} + x \left(U {b^\dagger}^{2} b^{2} + \tilde{\omega} {b^\dagger} b + \tilde{\varepsilon}\right)\)

\(\displaystyle x \left({b^\dagger}^{4} + b^{4}\right)\)

# Deffining Effective Hamiltonian Object
Eff_frame = EffectiveFrame(H, V)
The EffectiveFrame object has been initialized successfully.

Standard Schrieffer-Wolff Transformation

# Calculate the effective model using the Schrieffer-Wolff transformation up to the second order
Eff_frame.solve(max_order=3, method="SW")
# Obtaining the result in the dict_operator form
H_eff_SWT = Eff_frame.get_H(return_form='dict_operator')
Computing the effective Hamiltonian: 100%|████████| 3/3 [00:00<00:00,  3.23it/s]
The Hamiltonian has been solved successfully. Please use the get_H method to get the result in the desired form.
Converting to dictionary of operator form: 100%|█| 4/4 [00:00<00:00, 14993.04it/
# displaying resulting Hamiltonian
display_dict(H_eff_SWT)

\(\displaystyle {b^\dagger} b : \frac{42 U x^{3}}{\omega^{2}} + \frac{14 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle 1 : \frac{18 U x^{3}}{\omega^{2}} + \frac{6 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle {b^\dagger} b {b^\dagger} b : \frac{68 U x^{3}}{\omega^{2}} + \frac{6 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle {b^\dagger} b {b^\dagger} b {b^\dagger} b : \frac{12 U x^{3}}{\omega^{2}} + \frac{4 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle {b^\dagger} b {b^\dagger} b {b^\dagger} b {b^\dagger} b : \frac{10 U x^{3}}{\omega^{2}}\)

\(\displaystyle b^{8} : - \frac{U x^{3}}{\omega^{2}}\)

\(\displaystyle {b^\dagger}^{8} : - \frac{U x^{3}}{\omega^{2}}\)

ACE

# Deffining the mask
mask = Block(inf=b**8)
# Calculate the effective model using the Mask routine up to the second order
Eff_frame.solve(max_order=3, method="ACE", mask=mask)
H_eff_Mask = Eff_frame.get_H(return_form='dict_operator')
The perturbative interaction will be added to the full Hamiltonian
Computing the effective Hamiltonian: 100%|███████| 3/3 [00:00<00:00, 799.02it/s]
The Hamiltonian has been solved successfully. Please use the get_H method to get the result in the desired form.
Converting to dictionary of operator form: 100%|█| 2/2 [00:00<00:00, 21183.35it/
# displaying resulting Hamiltonian
display_dict(H_eff_Mask)

\(\displaystyle {b^\dagger} b : - U x + \tilde{\omega} x\)

\(\displaystyle 1 : \tilde{\varepsilon} x\)

\(\displaystyle {b^\dagger} b {b^\dagger} b : U x\)

\(\displaystyle {b^\dagger}^{4} : x\)

\(\displaystyle b^{4} : x\)

Full-diagonalization

# Calculate the effective model using the Full Diagonalization routine up to the second order
Eff_frame.solve(max_order=3, method="FD")
H_eff_FD = Eff_frame.get_H(return_form='dict_operator')
The perturbative interaction will be added to the full Hamiltonian
Computing the effective Hamiltonian: 100%|████████| 3/3 [00:00<00:00,  4.62it/s]
The Hamiltonian has been solved successfully. Please use the get_H method to get the result in the desired form.
Converting to dictionary of operator form: 100%|█| 4/4 [00:00<00:00, 20919.22it/
# displaying resulting Hamiltonian
display_dict(H_eff_FD)

\(\displaystyle {b^\dagger} b : \frac{42 U x^{3}}{\omega^{2}} + \frac{14 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle 1 : \frac{18 U x^{3}}{\omega^{2}} + \frac{6 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle {b^\dagger} b {b^\dagger} b : \frac{68 U x^{3}}{\omega^{2}} + \frac{6 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle {b^\dagger} b {b^\dagger} b {b^\dagger} b : \frac{12 U x^{3}}{\omega^{2}} + \frac{4 \tilde{\omega} x^{3}}{\omega^{2}}\)

\(\displaystyle {b^\dagger} b {b^\dagger} b {b^\dagger} b {b^\dagger} b : \frac{10 U x^{3}}{\omega^{2}}\)


License

SymPT is licensed under the MIT License. See the LICENSE file for details.


Citation

If you use SymPT in your research, please cite the following paper:

BibTeX Entry:

@misc{diotallevi2024symptcomprehensivetoolautomating,
      title={SymPT: a comprehensive tool for automating effective Hamiltonian derivations}, 
      author={Giovanni Francesco Diotallevi and Leander Reascos and Mónica Benito},
      year={2024},
      eprint={2412.10240},
      archivePrefix={arXiv},
      primaryClass={quant-ph},
      url={https://arxiv.org/abs/2412.10240}, 
}

APA Citation:

Diotallevi, G. F., Reascos, L., & Benito, M. (2024). SymPT: a comprehensive tool for automating effective Hamiltonian derivations. arXiv preprint arXiv:2412.10240.

IEEE Citation:

G. F. Diotallevi, L. Reascos, and M. Benito, "SymPT: a comprehensive tool for automating effective Hamiltonian derivations," arXiv preprint arXiv:2412.10240, 2024.


References