<HTML><HEAD><TITLE>Noncollinear package (v6.12) </TITLE><STYLE><!--P{font-size : medium;} --></STYLE></HEAD><BODY bgcolor="#cccccc">
<H1><B><FONT size="+2">Noncollinear package (v6.12)</FONT></B></H1>

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.

<H2><A name="section1"><FONT size="+1">
1.  Additions to the input file
</FONT></A></H2>

<P>

<H2><A name="section1.1"><FONT size="+0">
Additions to Category <tt> SITE </tt>:
</FONT></A></H2>

There is a separate spin orientation for each site, Each site may have
a token <tt> ROT </tt> that is defined by a sequence of rotations:

<pre>
  ROT=  rot#1,rot#2,rot#3...
</pre>

  Each of the <tt> rot# </tt> 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.<BR> The syntax is for the angle is <tt> (x,y,z).</tt> So,
  <tt> (0,1,0)pi/4 </tt> defines a rotation about the y axis.  Thus

<pre>
      ROT=(0,0,1)pi/4,(0,1,0)pi/3,(0,0,1)pi/2
</pre>
  or simply
<pre>
      ROT=z:pi/4,y:pi/3,z:pi/2
</pre>

  generates a rotation matrix corresponding to the Euler angles alpha=pi/4,
  beta=pi/3 gamma=pi/2.  <BR> The second form uses the allowed shorthand
  <tt> x: </tt> for <tt> (1,0,0) </tt>, <tt> y: </tt> for <tt> (0,1,0) </tt> and <tt> z: </tt> for <tt> (0,0,1)</tt>.

<P>

On execution, program will create a file <tt> eula.ctrl-file-ext </tt>, 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
<tt> eula.ctrl-file-ext </tt> if it exists.

<P>

<H2><A name="section1.1"><FONT size="+0">
Additions to Category <tt> OPTIONS </tt>:
</FONT></A></H2>

The following extra tokens are needed to enable noncollinear magnetism.

<pre>
  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
      factor.

      'sdmod' = 2 is for spin dynamics.

</pre>

<H2><A name="section2"><FONT size="+1">
2.  Self-consistency and mixing scheme in spin statics 
</FONT></A></H2>

<P>

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.

<pre>
      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
</pre>

In the MIX category, add a line like

<pre>
         AMODE=A4,w=0,0,wa=1,fn=ma
</pre>

This is much the same as the usual mixing lines for charge,
(see MIX in <tt> lmto.hmtl </tt>) except that you use <tt> AMODE= </tt> instead of
<tt>MODE= </tt>, with <tt> w=0,0,wa=1 </tt> to turn OFF mixing of charges and turn ON the
mixing of angles, and a separate file is keep information (here
file <tt> ma </tt>) from prior iterations.

To read the <B>sigm</B> file, you must add a token to category <B>HAM</B>.
<H2><A name="section2.1"><FONT size="+0">
Suppression of self-consistency in P,Q
</FONT></A></H2>

Finally, if you add 1000 to <tt> sdmod </tt>, 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 <tt> sdmod </tt> 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, <tt> scale </tt> 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.

<H2><A name="section3"><FONT size="+1">
3.  Test cases
</FONT></A></H2>

See file nc/README.

