Hi everyone,
I'm getting version-dependent exchange constants for the same system and I'd like to report the differences and ask which version I should trust.
I am working with monolayer CrBr3 (2 Cr per cell), non-collinear SIESTA with spin–orbit. Same siesta2J.py call on both machines (versions).
The SIESTA Hamiltonian passed to TB2J (aiida.HSX) and the aiida.fdf are byte-for-byte identical on both machines (md5-matched), so the DFT side is fixed. The only difference is the TB2J version: 0.9.17 on the cluster vs 0.8.0 on my workstation. I ran two basis sets (TZP, DZP), each with and without DFT+U, and each on the unrelaxed and PBEsol-relaxed geometry.
Values below are shell-averaged isotropic J in meV: J1 = nearest Cr–Cr (~3.72 Å), J2 = second shell (~6.44 Å), J3 = ~7.44 Å. w_charge is the total from the exchange.out header.
## TZP
| Case | Version | J1 | J2 | J3 | w_charge |
|-----------------|---------|--------|--------|---------|----------|
| +U | 0.9.17 | +3.990 | +0.749 | +0.060 | 130.00 |
| +U | 0.8.0 | +2.722 | +0.712 | −0.005 | 41.86 |
| +U relaxed | 0.9.17 | +4.715 | +0.745 | +0.060 | 129.98 |
| +U relaxed | 0.8.0 | +3.688 | +0.735 | +0.054 | 41.87 |
| U=0 | 0.9.17 | +2.279 | +0.512 | −0.077 | 130.00 |
| U=0 | 0.8.0 | +1.658 | +0.485 | −0.093 | 41.86 |
| U=0 relaxed | 0.9.17 | +3.393 | +0.544 | +0.008 | 129.93 |
| U=0 relaxed | 0.8.0 | +2.468 | +0.426 | −0.090 | 41.87 |
## DZP
| Case | Version | J1 | J2 | J3 | w_charge |
|-----------------|---------|--------|--------|---------|----------|
| +U | 0.9.17 | +4.720 | +0.705 | +0.048 | 130.00 |
| +U | 0.8.0 | +3.539 | +0.680 | −0.030 | 41.86 |
| +U relaxed | 0.9.17 | +5.490 | +0.704 | +0.044 | 129.99 |
| +U relaxed | 0.8.0 | +4.545 | +0.713 | +0.018 | 41.87 |
| U=0 | 0.9.17 | +2.347 | +0.476 | −0.091 | 130.00 |
| U=0 | 0.8.0 | +1.801 | +0.462 | −0.113 | 41.86 |
| U=0 relaxed | 0.9.17 | +3.525 | +0.516 | +0.005 | 129.92 |
| U=0 relaxed | 0.8.0 | +2.709 | +0.419 | −0.087 | 41.87 |
What differs
J1 is larger in 0.9.17 than in 0.8.0 in every case, by roughly 25–45%.
J2 is close between the two versions (typically within a few percent, up to ~20% in one U=0 relaxed case).
w_charge (header total): 0.9.17 reports ≈130.0 in every case; 0.8.0 reports ≈41.86. For reference, SIESTA reports 130.000 total valence electrons for this cell (Cr Z_val = 14, Br Z_val = 17, semicore pseudos). Per atom this is Cr ≈ 14.7 / Br ≈ 16.8 in 0.9.17 vs Cr ≈ 6.0 / Br ≈ 5.0 in 0.8.0.
Total magnetisation is essentially the same in both versions (≈6.0 μB per cell, = 2 Cr × 3 μB) in every case.
Which version is the one to trust for non-collinear SIESTA + DFT+U input, and whether the w_charge and J1 differences are expected between 0.8.0 and 0.9.17? I'm happy to share any of the exchange.out files and the HSX/fdf so you can reproduce it.
Thanks!