I have been working with Heisenberg, and when I calculate the MFA Curie temperature of ferromagnetic materials using the code (heisenberg_exchange.curieTemperature()) and manually (2 / (Kb * 3) * ∑ Jij), I get different results, but with small differences. However, when dealing with an antiferromagnetic material, the code does not work correctly it gives me a positive result, when it should give me a negative result, but manualy it works, giving me a negative result.
An example I have is for NiO:
Using the code, I obtained 95.9896238532 K.
Manually, I obtained -1182.25761098 K.
This was done with a density mesh of 125 Hartree, 15 k-points in the LCAOCalculator, and 12 k-points in Heisenberg.
How exactly does the MFA Curie temperature work so that it gives a different result?