RIXS calculations for an Anderson Impurity Model

RIXS calculations for an Anderson Impurity Model#

An Anderson Impurity Model (AIM) refers to a Hamiltonian with a set of correlated orbitals, often referred to as the impurity or metal states, that hybridize with a set of uncorrelated orbitals, commonly known as the ligands or bath states.

This example examines RIXS simulations for NiPS₃ based on Ref. [1].

AIM

In this example, we will focus on some properties of the model. If desired, the function we will run can be examined here.

import numpy as np
import matplotlib.pyplot as plt
from helper_function import make_rixs

%matplotlib inline

Original model#

ominc, eloss, rixs, impurity_occupation = make_rixs()
fig, ax = plt.subplots(figsize=(3, 4))
art = ax.pcolormesh(ominc, eloss, rixs.sum(-1).T, cmap='terrain', shading='gouraud',
                   vmin=0, vmax=1.5)
plt.colorbar(art, ax=ax, orientation='horizontal')
ax.set_xlabel('Incident energy (eV)')
ax.set_ylabel('Energy loss (eV)')
ax.set_title(f"Model from Nat. Comm. 15, 3496 (2024)")
plt.tight_layout()
plt.show()

Hide code cell output

../../_images/bf4285e88ff9f4efda5df48a32cee10accd486098a299eec333a4d1269f9e7c1.png

Let’s discuss how we obtained this model. (If desired, the full gory details are in Ref. [2].)

Magnetic field behavior#

What is the spin of the ground state? And what will happen when a magnetic field is applied?

ominc, eloss, rixs, impurity_occupation = make_rixs(ext_B=np.array([0.1, 0, 0]))
fig, ax = plt.subplots(figsize=(3, 4))
art = ax.pcolormesh(ominc, eloss, rixs.sum(-1).T, cmap='terrain', shading='gouraud',
                   vmin=0, vmax=0.5)
plt.colorbar(art, ax=ax, orientation='horizontal')
ax.set_xlabel('Incident energy (eV)')
ax.set_ylabel('Energy loss (eV)')
ax.set_title(f"{impurity_occupation:.1f} electrons on Ni")
ax.set_ylim(-0.1, 0.5)
plt.tight_layout()
plt.show()

Hide code cell output

../../_images/09ed329a9e4aed94b4519a48c4008a550a0358e7f64bf49c2c671fe2f31bd049.png

Charge-transfer energy behavior#

What happens to the charge on Ni and the spin-flip transition energy when the charge transfer energy is made very large?

ominc, eloss, rixs, impurity_occupation = make_rixs(ext_B=np.array([0.1, 0, 0]),
                                                    Delta=10, c_level=-696)
fig, ax = plt.subplots(figsize=(3, 4))
art = ax.pcolormesh(ominc, eloss, rixs.sum(-1).T, cmap='terrain', shading='gouraud',
                   vmin=0, vmax=0.5)
plt.colorbar(art, ax=ax, orientation='horizontal')
ax.set_xlabel('Incident energy (eV)')
ax.set_ylabel('Energy loss (eV)')
ax.set_title(f"{impurity_occupation:.1f} electrons on Ni")
ax.set_ylim(-0.1, 0.5)
plt.tight_layout()
plt.show()

Hide code cell output

../../_images/58b50029a3de37c709f663fc8355df349447dafd05ddf99f0e40497e13e88981.png