Noncollinear package (v6.12)

This package extends the ASA local spin-density approximation to the noncollinear case, in the rigid spin approximation. Also the forces on the magnetic spin orientations is computed, and programs lm and lmgf can use these forces to relax spin orientations to their ground state. You can also apply external magnetic fields resolved by site, by l, or by both l and m.

1. Additions to the input file

Additions to Category SITE :

There is a separate spin orientation for each site, Each site may have a token ROT that is defined by a sequence of rotations:
  ROT=  rot#1,rot#2,rot#3...
Each of the rot# is a string that generates a rotation about a specified axis of a specified amplitude. Four numbers are needed: three specify the angle, and one the magnitude of rotation.
The syntax is for the angle is (x,y,z). So, (0,1,0)pi/4 defines a rotation about the y axis. Thus
or simply
generates a rotation matrix corresponding to the Euler angles alpha=pi/4, beta=pi/3 gamma=pi/2.
The second form uses the allowed shorthand x: for (1,0,0) , y: for (0,1,0) and z: for (0,0,1).

On execution, program will create a file eula.ctrl-file-ext , and will always attempt to read this file when started again. Thus, the Euler angles in the input file will be superseded by those in the eula.ctrl-file-ext if it exists.

Additions to Category OPTIONS :

The following extra tokens are needed to enable noncollinear magnetism.
  NONCOL= t enables noncollinear magnetism

  SS= #1 #2 #3 #4 if present creates a spin spiral superimposed
      on the nocollinear spin alignments.  #1 #2 and #3 set the
      wave number of the SS along the three reciprocal lattice
      directions.  NB: there may be a bug in the program, so
      always use #1=0 and #2=0.  You must rotate the lattice
      vectors to find the orientation dependence of the SS.

      #4 is the SS angle of rotation.  Usually this parameter is
      zero.  See below for how to set the orientation of the
      individual spins on different sites.

  SO= t turns on spin-orbit coupling.  NB: turning on this option
      automatically causes lm and lmgf to use true spherical
      harmonics instead of the real ones.

  SDYN: sets parameters for spin dynamics.  The 'dynamics' aspect is
      not working properly yet.  But SDYN also sets up parameters for
      'spin statics', in which you can relax spin orientations to
      their minimum-energy states.  As will be clear from the
      description below, this can be a difficult and complicated
      process.  You turn on the statics with the following token in
      category OPTIONS:

      SDYN: switch, sdmod, scale, 0,0,0,0

      Setting 'switch' to a nonzero integer turns on the spin dynamics

     *'sdmod' tells the program what kind of statics or dynamics to
      do.  Because this motion is very slow, in the statics case you
      can accelerate the convergence to the ground state with a mixing
      scheme (see 10s digit sdmod below)

      'sdmod' = 0 does spin statics.  The output Euler angles are
      computed by rotating each spin to zero out the off-diagonal part
      of the spin density matrix, i.e. the exchange-correlation field
      is rotated to the direction of the density matrix.

      'sdmod' = 1 is also for spin statics.  It uses the 'magnetic
      force' on the spins and relaxes the spins by following a
      steepest-descents like scheme.

      Note: for either sdmod=0 or sdmod=1, you can 'scale' the Euler
      angle shift, i.e. the (output Euler angles) - (input Euler
      angles) by factor 'scale' (third argument to SDYN above).  If
      the interactive mode is on, you will be prompted for this

      'sdmod' = 2 is for spin dynamics.

2. Self-consistency and mixing scheme in spin statics

The new spin angles are then mixed in a linear combination with the starting angles to form a guess for Euler angles for the next iteration. The 10s digit of sdmod controls this mixing. Because this motion is very slow, you can accelerate the convergence to the ground state with a mixing scheme, in which information about angles and their attendant forces (or off-diagonal parts of the spin density matrix) in prior iterations is combined to accelerate convergence to the equilibrium configuration.

      10s digit sdmod=0 : The input and output Euler angles are
      included as extra parameters along with the moments P,Q, and all
      of the quantities are mixed together as part of the
      self-consistency procedure.

      10s digit sdmod=1 : The input and output Euler angles are mixed
      independently of the mixing for P,Q.  The mixing scheme is
      similar, but in this mode there is a second, independent mixing
      of the angles
In the MIX category, add a line like
This is much the same as the usual mixing lines for charge, (see MIX in lmto.hmtl ) except that you use AMODE= instead of MODE= , with w=0,0,wa=1 to turn OFF mixing of charges and turn ON the mixing of angles, and a separate file is keep information (here file ma ) from prior iterations. To read the sigm file, you must add a token to category HAM.

Suppression of self-consistency in P,Q

Finally, if you add 1000 to sdmod , the moments P and Q are not updated; only the Euler angles change. This is sometimes useful when you have no idea what the Euler angles are. Start with a random set of angles and relax them for a while with 1000s sdmod set, until the energy settles down a little. If you do not do this you may quench local moments so far that you always end up with a nonmagnetic potential. As noted above, scale is a factor that amplifies the magnetic forces. Self-consistency is complicated because of the cross coupling between the spin angle and charge degrees of freedom, with very different energy scales. This factor changes the relative weights of the two. In the early stages, this factor should be small (on the order of 1 to 5) to allow the charge density not to move too far off the Born-Oppenheimer surface. As the magnetic forces become small, you will want to increase this factor so that it doesn't take an excessive number of iterations to find the minimum-energy configuration of angles.

3. Test cases

See file nc/README.