# Calculating isotropic Heisenberg exchange parameters via the transverse susceptibility (full-potential LMTO)

This tutorial demonstrates the evaluation of Heisenberg exchange interactions using the (KKR-like) TB-LMTO-GF code lmgf (using the ASA) and via the bare transverse susceptibility, calculated using a sum over states based on the full-potential LMTO method.

The convention used for the tabulation of the Heisenberg integrals is: $H = - \sum_{i\neq j} J_{ij} \vec{e}_i . \vec{e}_j$, i.e. positive means ferromagnetic, $\vec{e}_i$ are unit spins; there is no “factor of 1/2.”

The model material is NiO treated with the LDA (scalar-relativistic). (This tutorial relates to the “gw-speedup” branch–and should therefore be considered experimental–as of 5 Aug 2022 and the procedure and format of the chipm.h5 file may change. Contact the developers for more information in case of interest.)

# Ctrl file

The character string “mode” is used switch between input suitable for ASA and FP; it is specific to this particular ctrl file only. The groups “gf,” “options,” and “bz_emesh” are only used by the ASA codes.

vers asa=7 fp=7

ham
xcfun=1 nspin=2
autobas[mto=4 lmto=5] gmax=8.0

% const de=0.005 de2=0.04
gw delre={de} {de2}

options asa[ccor=0 twoc=1]

% const gfmode=1
gf

% const nk=10 nz=30 ebot=-1.4 etop=0.1 ecc=0.5
bz
nkabc={nk}
emesh={nz} 10 {ebot} {etop} {ecc} 0.0

iter convc=1e-6 nit=20 mix[b5,b=0.3]

% char0 mode
struc
% ifdef mode=='asa'
nbas=8
% else
nbas=4
% endif
alat=7.88 plat=1/2 1/2 1 1/2 1 1/2 1 1/2 1/2

spec
% ifdef mode=='asa'
atom=ni  z=28 r/w=1 lmx=3 mmom=0 0 1
atom=nix z=28 r/w=1 lmx=3 mmom=0 0 -1
atom=o   z=8  r/w=1 lmx=3
atom=e   z=0  r/w=1 lmx=2
atom=e1  z=0  r/w=1 lmx=2
% else
atom=ni  z=28 r=2.19 lmx=3 lmxa=5 mmom=0 0 1  pz=0 0 4.3
atom=nix z=28 r=2.19 lmx=3 lmxa=5 mmom=0 0 -1 pz=0 0 4.3
atom=o   z=8  r=1.75 lmx=3 lmxa=5
% endif

site
atom=ni  xpos=0 0 0
atom=nix xpos=1/2 1/2 1/2
atom=o   xpos=1/4 1/4 1/4
atom=o   xpos=3/4 3/4 3/4
atom=e   xpos=-1/8 -1/8 -1/8
atom=e   xpos=1/8 1/8 1/8
atom=e1  xpos=-3/8 -3/8 -3/8
atom=e1  xpos=3/8 3/8 3/8

symgrp i*r3d r2(1,0,-1) afm:e::(1/2,1/2,1/2)


It is best to perform the ASA and FP calculations in different directories.

# $J_{ij}$ calculation using TB-LMTO-GF code lmgf

lmstr -cmode=asa                                                ctrl.nio |tee llmstr
lm    -cmode=asa                                                ctrl.nio |tee llm
lmgf  -cmode=asa -vgfmode=1                                     ctrl.nio |tee llmgf1
lmgf  -cmode=asa -vgfmode=10                                    ctrl.nio |tee llmgf10
lmgf  -cmode=asa -vgfmode=11 --wrsj~sscl~tol=0 --sites:pair:1,2 ctrl.nio |tee llmgf11

• 2 empty spheres added to basis and all sites, including empty spheres, use common average Wigner-Seitz radius.
• The order-2 LMTO Hamiltonian is used (aka 2-center H.) and combined corrections are switched off (“options_asa[ccor=0 twoc=1]”) such that lm is consistent with lmgf. This means that lmgf can use the converged density calculated by lm without further refinement. The order-2 formulation in lmgf is more stable than the slightly more accurate order-3 method (“gf_gfopts=p3” instead of “gf_gfopts=p2”).
• “gfmode=1” performs the self-consistent TB-LMTO-GF calculation.
• “gfmode=10” performs the $J_{ij}$ calculation using the “Liechtenstein Formula.”
• “gfmode=11” prints the interactions: the options cause the writing of a easily readable file “rsj.nio,” (interactions smaller than tol are not printed) and specify that only interactions between sites 1 and 2 (the Ni sites) are printed.
• Because this case is antiferromagnetic, the calculated $J$ should be scaled by the signs of the moments (option “sscl”).
• Calculated $J$ shown in red circles in the figure below.

The gap is 0.516 eV (as reported by lm) and Ni moments are of size 1.237 $\mu_B$. The sum of $J$, printed by lmgf mode 11, corresponds to a mean-field critical temperature $2J^0/3 = -409$ K, negative because of antiferromagnetic ordering.

# $\chi^{0,+-}$ calculation using lmgw.sh

lmfa --usebasp        ctrl.nio |tee lmfa
lmgw.sh --stop=setup  ctrl.nio |tee lsetup
echo MagAtom 1 2 >> GWinput
hbasfp0 --job=8       ctrl.nio |tee lbas
hx0fp0-pm             ctrl.nio |tee lx0

• Converging the calculation with lmf yields $E_g = 0.461$ eV and Ni moments of 1.222 $\mu_B$.
• The bare transverse susceptibility $\chi^{0,+-}(\omega,q)$ is evaluated for all $q$ in IBZ, defined by token “gw_nkabc,” or, if this is absent (as it is here) then “bz_nkabc.”
• The frequency mesh is defined by “gw_delre;” as for dielectric function calculations, generally a finer mesh is required than for QSGW calculations.
• The MagAtom entry in the “GWinput” file specifies which sites are to be considered magnetic.
• hx0fp0-pm can be invoked in parallel and uses the same (potentially GPU) backend as does lmsig.
• $\chi^{0,+-}$ is projected onto the $l=0$ magnetization on each (specified) site and it is this that is written to disk in file “chipm.h5.” This corresponds to $D^{0,+-}$ in the main reference: Kotani and MvS J. Phys: Cond. Mat. 2008 .
• Frequencies in Rydberg are recorded in dataset “/realw” in chipm.h5. This file also includes negative frequencies, but there is little information there.
• Unlike the previous “Chipm.mat” files, both spin contributions (npm=1,2) are summed together in chipm.h5.
• The normalization of the projection $D^{0,+-}$ is slightly modified compared with the TK-MvS calculations.

# $J^0_{ij}$ evaluation from $\chi^{0,+-}$ using lmf (“chimedit” mode)

The bare Heisenberg exchange interactions can be evaluated from the bare transverse susceptibility. Only the $\omega=0$ limit of the susceptibility is used. (Indeed, without knowing the enhanced susceptibility, the spin wave frequencies as a function of $q$ are not known.)

lmf’s chimedit mode has two simple functions that evaluate $J(q)$ and map $J$ IBZ-FBZ before Fourier-transforming to real space. These are discussed in the context of equations 15 and 16 in TK-MvS .

The resulting $J$ are very close numerically to the ASA-Liechtenstein Formula results: the agreement is better with the (approximate) $IDI$ formulation than with $D^{-1}$, but the difference is small. Because of the inclusion of both $+-$ contributions, and the more precise normalization of $D$, the results are different to those presented in TK-MvS (where the large AF interaction has magnitude 1.04 mRyd; note that in that paper the “with 1/2” spin model convention was used).

lmgf can be used to printout the same tabulation (mode 11) as before, but in order to be consistent with lmf (which shortens by default) we must explicitly instruct lmgf to shorten positions. The chimedit modes always do the scaling by spin orientation (unlike lmgf), so option “sscl” is not needed here.

lmgf and lmf (in the “–chimedit~x0invj” or “–chimedit~x0lfj” modes) only understands “bz_nkabc” and not “gw_nkabc,” so these may need to be made consistent “by hand” for these steps.

When only doing the full-potential calculation, the ASA tags (“vers_asa,” “gf_mode=11,” “options_asa[]” and “bz_emesh”) must be added even when lmgf is just used to print out $J$.

### mode 1: inverse of transverse susceptibility

• Mode 1: $J^{0}_{ij}(\omega{=}0,q)=[D^{0,+-}(\omega{=}0,q)]^{-1}_{ij}$
• Option “–chimedit~x0invj”
• $2J^0/3 = -426.8$ K
• Shown in blue square symbols in the figure below.

### mode 2: Liechtenstein-formula-like expression

• Mode 2: $J^{0}_{ij}(\omega{=}0,q)= I_i \times D^{0,+-}_{ij}(\omega{=}0,q) \times I_j$
• $I_i = 1/D_{ii}$, from the on-site $D$ term, is evaluated in real-space
• In this mode, the on-site real-space $J$ is zero (subtracted off).
• Option “–chimedit~x0lfj”
• $2J^0/3 = -388.2$ K
• Shown in blue circle symbols in the figure below.
lmstr --shorten -cmode=asa ctrl.nio  |tee llmstr

lmf --chimedit~x0invj~q ctrl.nio |tee lchimedit-x0inv
lmgf --shorten -cmode=asa -vgfmode=11 --wrsj~tol=0 --sites:pair:1,2 ctrl.nio |tee llmgf11-x0inv
mv rsj.nio rsj-x0inv.nio
mv jr.nio jr-x0inv.nio

lmf --chimedit~x0lfj~q  ctrl.nio |tee lchimedit-lf
lmgf --shorten -cmode=asa -vgfmode=11 --wrsj~tol=0 --sites:pair:1,2 ctrl.nio |tee llmgf11-lf
mv rsj.nio rsj-lf.nio
mv jr.nio jr-lf.nio 