QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: PedroSousa on April 7, 2026, 13:49

Title: HeisenbergExchange
Post by: PedroSousa on April 7, 2026, 13:49
Dear all,

I have been using the HeisenbergExchange analyzer in QuantumATK (Version X-2025.06-SP1) to calculate the magnetic exchange parameters (J_{ij}) for several materials. So far, I have followed the workflow below to extract the (J_{ij}) values:

1. Using QATK I create and run a Python script to perform the LCAO and HeisenbergExchange calculations, storing the results in an `.hdf5` file.

2. I then open `atkpython` and use the following code to extract the exchange parameters:

   ```
   he = nlread(filename, HeisenbergExchange)[0]
   d, j, n = he.uniqueCouplingMatrixElementsAndDistances()
   ```

   where `j` is a vector containing the (J_{ij}) values in meV.

This approach has worked well for several systems. However, when applying it to hexagonal Fe₃C, the resulting `j` vector contains very small values for a ferromagnetic material. The largest value obtained is approximately 1.33 meV.

On the other hand, when I open the `.hdf5` results file directly in QuantumATK, the (J_{ij}) values shown in the GUI are significantly larger and appear physically reasonable (see attached image).

I would like to understand the origin of this discrepancy and how to correctly extract the full set of (J_{ij}) values consistent with what is shown in QuantumATK.

Thank you in advance for your help.

Best regards,
Pedro Sousa