Spinors with VASP

Note that c2x 2.41 or later is required for this example.

This example closely follows the Mn3Sn Castep example, with just the differences highlighted.

Input Files

POSCAR

Mn3Sn
   1.0000000000000000
    5.670000     0.000000     0.000000
   -2.835000     4.910364     0.000000
    0.000000     0.000000     4.530000
   Sn   Mn
  2  6
Direct
 0.833333   0.166667   0.250000
 0.166667   0.833333   0.750000
 0.822693   0.661346   0.250000
 0.338654   0.661346   0.250000
 0.338654   0.177307   0.250000
 0.661346   0.822693   0.750000
 0.661346   0.338654   0.750000
 0.177307   0.338654   0.750000

INCAR

ISPIN = 2
ISYM = -1
LSORBIT = .TRUE.
LNONCOLLINEAR = .TRUE.
ICHARG = 2
NBANDS = 68
MAGMOM = 0  0  0 \
          0  0  0 \
          0.5  0  0 \
         -0.25 -0.43301  0 \
         -0.25  0.43301  0 \
         -0.25  0.43301  0 \
         -0.25 -0.43301  0 \
          0.5  0  0

KPOINTS

comment
0
Gamma
5 5 6
0 0 0

POTCAR

The standard Sn and Mn POTCAR files should be concatenated, in that order. These are Mn+7 and Sn+4 pseudopotentals. More accurate pseudopotentials with fewer electrons in the core are distributed in the _pv and _sv directories, but these are not needed for this example.

Running VASP

The vasp_ncl binary must be used, not the vasp_std one. Expect around 15 core-minutes.

Results

$ c2x -sv --vec2force=1.35i --null CHG
Found 3D data for Vector spin
Data contain 3 components. Per component analysis:
  min=-1.93874 max=3.83704 sum=-20.1737 int=-0.0306758 int|s|=12.2269
  min=-3.3254 max=3.31462 sum=-48.3453 int=-0.073513 int|s|=10.8456
  min=-0.00557154 max=0.00765291 sum=0.527553 int=0.000802188 int|s|=0.0380846
  With s as vector, min(|s|)=0.000003, max(|s|)=3.838073, int|s|=18.352590
  (integral is e per cell for charge and spin densities)
Sampling of vector data integrating over 1.350000A using 24 points radially
Sn at (0.8333,0.1667,0.2500) vector ( 0.0003, 0.0006,-0.0000) modulus 0.0006
Sn at (0.1667,0.8333,0.7500) vector ( 0.0003, 0.0005,-0.0000) modulus 0.0006
Mn at (0.8227,0.6613,0.2500) vector ( 2.9498,-0.0402,-0.0033) modulus 2.9501
Mn at (0.3387,0.6613,0.2500) vector (-1.4756,-2.5608, 0.0026) modulus 2.9555
Mn at (0.3387,0.1773,0.2500) vector (-1.4933, 2.5478, 0.0011) modulus 2.9531
Mn at (0.6613,0.8227,0.7500) vector (-1.4841, 2.5526,-0.0012) modulus 2.9527
Mn at (0.6613,0.3387,0.7500) vector (-1.4825,-2.5561, 0.0059) modulus 2.9549
Mn at (0.1773,0.3387,0.7500) vector ( 2.9554,-0.0162,-0.0042) modulus 2.9554

So effectively zero spin on the Sn atoms, and effectively equal spin on the Mn atoms, but pointing in different directions in the x-y plane, and integrating to zero.

Wrong Results

$ c2x -sv --vec2force=1.35i --null CHG
Found 3D data for Vector spin
Data contain 3 components. Per component analysis:
  min=-0.0149219 max=0.0124141 sum=-12.3173 int=-0.0187295 int|s|=0.0505455
  min=-0.0148704 max=0.0233074 sum=-8.9977 int=-0.0136818 int|s|=0.0684945
  min=-0.0117766 max=0.00783068 sum=1.7843 int=0.00271318 int|s|=0.0284197
  With s as vector, min(|s|)=0.000003, max(|s|)=0.028194, int|s|=0.098114
  (integral is e per cell for charge and spin densities)
Sampling of vector data integrating over 1.350000A using 24 points radially
Sn at (0.8333,0.1667,0.2500) vector ( 0.0000, 0.0000,-0.0001) modulus 0.0001
Sn at (0.1667,0.8333,0.7500) vector ( 0.0001, 0.0001, 0.0000) modulus 0.0002
Mn at (0.8227,0.6613,0.2500) vector (-0.0102, 0.0153, 0.0043) modulus 0.0189
Mn at (0.3387,0.6613,0.2500) vector ( 0.0016,-0.0079,-0.0067) modulus 0.0105
Mn at (0.3387,0.1773,0.2500) vector ( 0.0084, 0.0085, 0.0053) modulus 0.0131
Mn at (0.6613,0.8227,0.7500) vector (-0.0098,-0.0088, 0.0028) modulus 0.0135
Mn at (0.6613,0.3387,0.7500) vector (-0.0019,-0.0109,-0.0028) modulus 0.0114
Mn at (0.1773,0.3387,0.7500) vector (-0.0064,-0.0094,-0.0003) modulus 0.0113

Now the spin on the Mn atoms is very weak, about 200 times weaker than before, although it is still about two orders of magnitude stronger than on the Sn atoms. Although int|s|$gt;int s, and mathematically it could never be less, there is little going on, with int|s| in the x direction only twice as large as it is in the z direction, rather than over 200 times larger as it was previously.

What went wrong? INCAR lacked the line setting the number of bands to calculate to 68. The default number of 60 produces slow convergence to an unwanted state, and a warning about a lack of empty bands.