[Pw_forum] Sign of magnetization

Ivo Souza isouza at berkeley.edu
Wed Nov 14 19:54:25 CET 2007


Ralph,

   I agree with your comment, except for the part where you imply that 
spin-orbit effects are of little relevance. They are very relevant to 
many people. I can name at least three or four :)

   In fact, it was by investigating a spin-orbit-induced effect (the 
so-called anomalous Hall effect) in iron that we concluded(*) that there 
was a sign problem in the definition of the magnetization in pwscf.
For bcc iron with the magnetization along the positive z-direction it is 
known, both experimentally and from first-principles calculations [see 
PRL 92, 037204 ('04)], that the anomalous Hall conductivity sigma_xy is 
*positive*. Instead, we found a negative value with pwscf. Of course, 
what really happened is that pwscf was giving us a ground state with a 
negative magnetization, thus flippling the sign sigma_xy.

   Regards, and thanks to the pwscf community for the wonderful code!

   Ivo

  --
---------------------------------------------------
Ivo Souza
Department of Physics, Univ. of California Berkeley
tel. +1.510.642.3597 fax +1.510.643.8497
isouza at berkeley.edu  http://smilodon.berkeley.edu/
---------------------------------------------------

(*) We actually made a compensating sign error in our code for computing 
the anomalous Hall conductivity. We just realized that recently...


Ralph Gebauer wrote:
> Dear Ivo,
> 
> I think that you are right. Probably the sign convention we have adopted
> corresponds to a "spin polarization" rather than to a "magnetic moment".
> 
> Since in the usual LDA-GGA functionals the energy depends only on the
> absolute value of the local magnetic moment (and not on its direction),
> the energy is invariant with respect to a global rotation of the
> direction of the magnetization. The direction of \vec{m} is linked to
> the lattice axis only if one considers spin-orbit interactions or
> externally applied fields, and the like. So the sign ambiguity you
> mention is probably of little relevance, but of course, one should still
> be precise. Best would probably be to put spin polarization or something
> like that in the output, in order to avoid changing sings all over in
> the code.
> 
> Ralph
> 
> 
> 
> 
> 
> 
>> Dear all,
>>
>>    I am trying to understand whether there is a sign error in the 
>> definition of the total magnetization in pwscf. In other words, when the 
>> code tells us that, e.g., the magnetic moment of bcc iron points along 
>> +z, is it really pointing along minus z?
>>
>>    The spin magnetic moment of a state is (n units of the Bohr magneton)
>>
>> <\mu_z> = -<sigma_z>
>>
>> (note the minus sign) where sigma_z is the Pauli matrix.
>>  From the subroutine 'compute_magnetization' in electrons.f90:
>>
>> -------------------------------------------------------
>>         IF ( lsda ) THEN
>>            !
>>            magtot = 0.D0
>>            absmag = 0.D0
>>            !
>>            DO ir = 1, nrxx
>>               !
>>               mag = rho(ir,1) - rho(ir,2)
>>               !
>>               magtot = magtot + mag
>>               absmag = absmag + ABS( mag )
>>               !
>>            END DO
>>            !
>>            magtot = magtot * omega / ( nr1*nr2*nr3 )
>>            absmag = absmag * omega / ( nr1*nr2*nr3 )
>> -------------------------------------------------------
>>
>> My understanding is that rho(ir,1) and rho(ir,2) are respectively the 
>> (number) densities for spin-up ("moment-down") and spin-down 
>> ("moment-up") electrons. If so, then it seems to me that
>>
>>               mag = rho(ir,1) - rho(ir,2)
>>
>> should be replaced by
>>
>>               mag = rho(ir,2) - rho(ir,1)
>>
>> in order to get the correct sign for the magnetic moment per unit cell 
>> 'magtot'
>>
>> The above is for collinear (lsda) calculations, but the same issue with 
>> the sign is present in the definition of the total magnetization in the 
>> non-collinear case:
>>
>> -------------------------------------------------------
>>         ELSE IF ( noncolin ) THEN
>>            !
>>            magtot_nc = 0.D0
>>            absmag    = 0.D0
>>            !
>>            DO ir = 1,nrxx
>>               !
>>               mag = SQRT( rho(ir,2)**2 + rho(ir,3)**2 + rho(ir,4)**2 )
>>               !
>>               DO i = 1, 3
>>                  !
>>                  magtot_nc(i) = magtot_nc(i) + rho(ir,i+1)
>>                  !
>>               END DO
>>               !
>>               absmag = absmag + ABS( mag )
>>               !
>>            END DO
>>            !
>>            CALL mp_sum( magtot_nc, intra_pool_comm )
>>            CALL mp_sum( absmag,    intra_pool_comm )
>>            !
>>            DO i = 1, 3
>>               !
>>               magtot_nc(i) = magtot_nc(i) * omega / ( nr1*nr2*nr3 )
>>               !
>>            END DO
>>            !
>>            absmag = absmag * omega / ( nr1*nr2*nr3 )
>>            !
>>         ENDIF
>>   -------------------------------------------------------
>>
>> Since [see subroutine 'sum_band_k'] rho(ir,2), rho(ir,3) and rho(ir,4) 
>> are respectively the x,y, and z components of the spin polarization 
>> density, proportional to psi^*(r).sigma_i.psi(r) (i=x,y,z), the line
>>
>>                  magtot_nc(i) = magtot_nc(i) + rho(ir,i+1)
>>
>> should be replaced by
>>
>>                  magtot_nc(i) = magtot_nc(i) - rho(ir,i+1)
>>
>>
>>    It is quite easy to get confused with signs, so I apologize if the 
>> confusion is on my side! Also, it could just be a matter of semantics, 
>> and what is mean by "magnetic moment" in pwscf is really "spin 
>> polarization." Any clarification would be greatly appreciated.
>>
>>    With thanks and best regards,
>>
>>    Ivo S.
> 
> 


More information about the Pw_forum mailing list