Dear collegues,

we have problem ragarding local rotation matrix, which we encountered when calculating  electronic structure of bcc Fe (spin-polarized + spin-orbit) for different magnetization directions.

We have calculated electronic structure of bcc Fe as suggested by Prof. Blaha, using TEMP integration, and large k-mesh (90x90x90) to calculate electronic structure and TETRA integration to calculate optics (thank you a lot for your help!).

However, for one magnetization direction, [-1 1 1], the electronic structure (and related optical properties) did not agreed with equivalent magnetization directions [111], [-111], [11-1]. Going deeper, we found that the local rotation matrix is identical for [-111] and [1-11] magnetization directions.

We expected that for general magnetization direction, the corresponding magnetization direction in the local (rotated) coordinates should be [0 0 1]. Hence, we expected the local rotation matrix should be different for different magnetization direction.

UM (appendix A) defines: "The local rotation matrix R , which transforms the global coordinates r_g to the rotated ones r_r , is  defined by R*r_g = r_r."

Therefore, we checked what is the direction of the magnetization in the local coordinates for different magnetization directions, using relation mag_glob*R = mag_loc, where mag_glob, mag_loc are magnetization directions in global, local coordinates, respectively. (COMMENT: according to UM we should use relation mag_loc=R*mag_glob, where mag_glob, mag_loc are column vectors. However, the local rotation matrix in case.outsymso and case.struct seems to be defined by a row vector: mag_glob*R = mag_loc, which we use in following).

--> for many magnetization directions the local direction of magnetization is really [001] as expected, namely for magnetizations [100], [010], [001], [011], [101], [111], [1-11]

--> for some magnetization directions, the local direction of the magnetization is [00-1], which (in my understanding) is OK. This happens for magnetization directions [11-1], [00-1], [0-10],[-100]

--> However, for many magnetization directions, the local direction of magnetization is not [001] or [00-1], for example: *  magnetization [-111] being in the local coordinates [-0.94281 0   -0.33333] .
*  magnetization [110] being in the local coordinates [0  1  0].
*  magnetization [-110] being in the local coordinates [-1  0 0].
*  magnetization [-101] being in the local coordinates [-1 0 0].
*  magnetization [0-11] being in the local coordinates [1 0 0]


--> comparing resulting electronic structure for equivalent magnetization directions, we found problem with only [-111] direction, where band energies differs substantially (in order of mRy -- see end of the email) from other equivalent directions, e.g. [111].  Obviously, it is because the magnetization is not rotated to x,y or z directions, but has direction [-0.94281  0 -0.33333].

--> we have tried to replace 'faulty' local rotation matrix in [-111] direction by matrix

-0.4082483 -0.7071068 -0.5773503
 0.4082483 -0.7071068 0.5773503
-0.8164966 0.0000000  0.5773503

tentatively determined by relations

Rz=[cos(phi) sin(phi) 0
        -sin(phi) cos(phi) 0
        0 0 1]

Ry=[cos(theta) 0 -sin(theta)
        0 1 0
        sin(theta) 0 cos(theta)]

R=inv(Ry*Rz)

where theta, phi are orientations of the magnetization. Note that those local rotation matrices correctly generates R which rotates magnetization to [0 0 1] in the local coordinates, i.e. [0 0 1]*inv(R)=magnetization

For this corrected local rotation matrix in case of [-111], the electronic structure and related optics get fixed (i.e. get agreed with others).

--> we also checked that all symmetries for [-111] magnetization direction seems correct. The problem seems to be only with the local rotation matrix.

--> NOTE: Particularly surprising is the local rotation matrix for [110] direction, being

    0.7071    0.7071         0
   -0.7071    0.7071         0
         0         0         1

i.e. rotating only around z-axis and hence placing [110] magnetization just along y position. To rotate magnetization from [110] to [001], R should
have form

     0     -0.7071    0.7071
     0      0.7071    0.7071
    -1          0       0


For your information, we attached calculations for Fe90M111 and Fe90-111 directions:

http://alma.karlov.mff.cuni.cz/hamrle/w2kfig/Fe90M111/

http://alma.karlov.mff.cuni.cz/hamrle/w2kfig/Fe90M-111/


Please, can you help me to answer following questions:

1) should the local rotation matrix rotate magnetization direction to [0
0 1] direction in the local coordinates? I'm confused that for some
equivalent magnetization direction  it does, sometimes it does not. Is
it just a feature of the code, or it has some physical reasoning?

2) from symmetry point of view, should there be a difference in electronic structure calculated for different magnetization directions, where local rotation matrix rotates magnetization to local x/y direction compared to those rotating to local z direction? Numerically, the results are
very similar, but for example in MLD, we can see some difference, but
it can be due to numerical issues. For example, LM for 110 magnetization is
lm: 0 0  2 0  2 2  4 0  4 2  4 4  6 0  6 2  6 4  6 6
which seems to me to be build for preferred z-direction. On the other
hand, band energies equals within 1e-6 Ry (see below) between [110] and
[011], having magnetization in the local coordinates in x,z directions,
respectively.

3) do you think/suggest, is it a good practise to replace local rotation
matrix by a matrix, which always rotates magnetization to [0 0 1]
direction in the local coordinates? I understand there is also
structural symmetry, but I'm not sure how limiting it is for simple
cases such as bcc Fe.

Thank you for any help and with our best regards

Jaroslav Hamrle
Ondrej Stejskal


=============== magnetization [1  1  1] ==================
--> from case.outsymso:
   magnetization direction:
   [1  1  1]
   theta , phi [deg] of the magnetization direction:
   54.7356   45.0000

   local rotation matrix R:
    0.4082   -0.7071    0.5774
    0.4082    0.7071    0.5774
   -0.8165         0    0.5774

--> R rotates magnetization in local coordinates to:
   [0 0 1]
---> calculated using [0 0 1]*inv(R) (should be equal to original magnetization direction):
   direction [0 0 1]* inv(R):
   [1 1 1] /sqrt(3)
   theta, phi [deg] of direction [0 0 1]* inv(R):
   54.7356   45.0000

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.4082   -0.7071    0.5774
    0.4082    0.7071    0.5774
   -0.8165         0    0.5774

=============== magnetization [1  1 -1] ==================
--> from case.outsymso:
   magnetization direction:
   [1  1 -1]
   theta , phi [deg] of the magnetization direction:
  125.2644   45.0000

   local rotation matrix R:
    0.4082   -0.7071   -0.5774
    0.4082    0.7071   -0.5774
    0.8165         0    0.5774

--> R rotates magnetization in local coordinates to:
   [0  0 -1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [-1 -1  1] /sqrt(3)
   theta, phi [deg] of direction [0 0 1]* inv(R):
   54.7356 -135.0000

   local rotational matrix inv(Rz(phi)*Ry(theta))
   -0.4082   -0.7071    0.5774
   -0.4082    0.7071    0.5774
   -0.8165    0.0000   -0.5774

=============== magnetization [1 -1  1] ==================
--> from case.outsymso:
   magnetization direction:
   [1 -1  1]
   theta , phi [deg] of the magnetization direction:
   54.7356  -45.0000

   local rotation matrix R:
    0.4082    0.7071    0.5774
   -0.4082    0.7071   -0.5774
   -0.8165         0    0.5774

--> R rotates magnetization in local coordinates to:
   [0  0  1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [1  -1  1] /sqrt(3)
   theta, phi [deg] of direction [0 0 1]* inv(R):
   54.7356  -45.0000

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.4082    0.7071    0.5774
   -0.4082    0.7071   -0.5774
   -0.8165         0    0.5774

=============== magnetization [-1  1  1] ==================
--> from case.outsymso:
   magnetization direction:
   [-1  1  1]
   theta , phi [deg] of the magnetization direction:
   54.7356  135.0000

   local rotation matrix R:
    0.4082    0.7071    0.5774
   -0.4082    0.7071   -0.5774
   -0.8165         0    0.5774

--> R rotates magnetization in local coordinates to:
   [-0.94281  0   -0.33333]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [1  -1  1] /sqrt(3)
   theta, phi [deg] of direction [0 0 1]* inv(R):
   54.7356  -45.0000

   local rotational matrix inv(Rz(phi)*Ry(theta))
   -0.4082   -0.7071   -0.5774
    0.4082   -0.7071    0.5774
   -0.8165         0    0.5774

=============== magnetization [0  0  1] ==================
--> from case.outsymso:
   magnetization direction:
   [0  0  1]
   theta , phi [deg] of the magnetization direction:
     0     0

   local rotation matrix R:
     1     0     0
     0     1     0
     0     0     1

--> R rotates magnetization in local coordinates to:
   [0  0  1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  0  1]
   theta, phi [deg] of direction [0 0 1]* inv(R):
     0     0

   local rotational matrix inv(Rz(phi)*Ry(theta))
     1     0     0
     0     1     0
     0     0     1

=============== magnetization [0  0 -1] ==================
--> from case.outsymso:
   magnetization direction:
   [0  0 -1]
   theta , phi [deg] of the magnetization direction:
   180     0

   local rotation matrix R:
     1     0     0
     0     1     0
     0     0     1

--> R rotates magnetization in local coordinates to:
   [0  0 -1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  0  1]
   theta, phi [deg] of direction [0 0 1]* inv(R):
     0     0

   local rotational matrix inv(Rz(phi)*Ry(theta))
   -1.0000         0    0.0000
         0    1.0000         0
   -0.0000         0   -1.0000

=============== magnetization [0  1  0] ==================
--> from case.outsymso:
   magnetization direction:
   [0  1  0]
   theta , phi [deg] of the magnetization direction:
    90    90

   local rotation matrix R:
     0     1     0
     0     0     1
     1     0     0

--> R rotates magnetization in local coordinates to:
   [0  0  1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  1  0]
   theta, phi [deg] of direction [0 0 1]* inv(R):
    90    90

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.0000   -1.0000    0.0000
    0.0000    0.0000    1.0000
   -1.0000         0    0.0000

=============== magnetization [0 -1  0] ==================
--> from case.outsymso:
   magnetization direction:
   [0 -1  0]
   theta , phi [deg] of the magnetization direction:
    90   -90

   local rotation matrix R:
     0     1     0
     0     0     1
     1     0     0

--> R rotates magnetization in local coordinates to:
   [0  0 -1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  1  0]
   theta, phi [deg] of direction [0 0 1]* inv(R):
    90    90

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.0000    1.0000    0.0000
   -0.0000    0.0000   -1.0000
   -1.0000         0    0.0000

=============== magnetization [1  0  0] ==================
--> from case.outsymso:
   magnetization direction:
   [1  0  0]
   theta , phi [deg] of the magnetization direction:
    90     0

   local rotation matrix R:
     0     0     1
     0     1     0
    -1     0     0

--> R rotates magnetization in local coordinates to:
   [0  0  1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [1  0  0]
   theta, phi [deg] of direction [0 0 1]* inv(R):
    90     0

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.0000         0    1.0000
         0    1.0000         0
   -1.0000         0    0.0000

=============== magnetization [1  1  0] ==================
--> from case.outsymso:
   magnetization direction:
   [1  1  0]
   theta , phi [deg] of the magnetization direction:
   90.0000   45.0000

   local rotation matrix R:
    0.7071    0.7071         0
   -0.7071    0.7071         0
         0         0    1.0000

--> R rotates magnetization in local coordinates to:
   [0  1  0]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  0  1]
   theta, phi [deg] of direction [0 0 1]* inv(R):
     0     0

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.0000   -0.7071    0.7071
    0.0000    0.7071    0.7071
   -1.0000         0    0.0000

=============== magnetization [-1  1  0] ==================
--> from case.outsymso:
   magnetization direction:
   [-1  1  0]
   theta , phi [deg] of the magnetization direction:
    90   135

   local rotation matrix R:
    0.7071    0.7071         0
   -0.7071    0.7071         0
         0         0    1.0000

--> R rotates magnetization in local coordinates to:
   [-1  0  0]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  0  1]
   theta, phi [deg] of direction [0 0 1]* inv(R):
     0     0

   local rotational matrix inv(Rz(phi)*Ry(theta))
   -0.0000   -0.7071   -0.7071
    0.0000   -0.7071    0.7071
   -1.0000         0    0.0000

=============== magnetization [1  0  1] ==================
--> from case.outsymso:
   magnetization direction:
   [1  0  1]
   theta , phi [deg] of the magnetization direction:
   45.0000         0

   local rotation matrix R:
    0.7071         0    0.7071
         0    1.0000         0
   -0.7071         0    0.7071

--> R rotates magnetization in local coordinates to:
   [0  0  1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [1  0  1] /sqrt(2)
   theta, phi [deg] of direction [0 0 1]* inv(R):
    45     0

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.7071         0    0.7071
         0    1.0000         0
   -0.7071         0    0.7071

=============== magnetization [-1  0  1] ==================
--> from case.outsymso:
   magnetization direction:
   [-1  0  1]
   theta , phi [deg] of the magnetization direction:
   45.0000  180.0000

   local rotation matrix R:
    0.7071         0    0.7071
         0    1.0000         0
   -0.7071         0    0.7071

--> R rotates magnetization in local coordinates to:
   [-1  0  0]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [1  0  1] /sqrt(2)
   theta, phi [deg] of direction [0 0 1]* inv(R):
    45     0

   local rotational matrix inv(Rz(phi)*Ry(theta))
   -0.7071   -0.0000   -0.7071
    0.0000   -1.0000    0.0000
   -0.7071         0    0.7071

=============== magnetization [0  1  1] ==================
--> from case.outsymso:
   magnetization direction:
   [0  1  1]
   theta , phi [deg] of the magnetization direction:
   45.0000   90.0000

   local rotation matrix R:
         0    1.0000         0
   -0.7071         0    0.7071
    0.7071         0    0.7071

--> R rotates magnetization in local coordinates to:
   [0  0  1]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  1  1] /sqrt(2)
   theta, phi [deg] of direction [0 0 1]* inv(R):
    45    90

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.0000   -1.0000    0.0000
    0.7071    0.0000    0.7071
   -0.7071         0    0.7071

=============== magnetization [0 -1  1] ==================
--> from case.outsymso:
   magnetization direction:
   [0 -1  1]
   theta , phi [deg] of the magnetization direction:
   45.0000  -90.0000

   local rotation matrix R:
         0    1.0000         0
   -0.7071         0    0.7071
    0.7071         0    0.7071

--> R rotates magnetization in local coordinates to:
   [1  0  0]
---> calculated using [0 0 1]*inv(R) (should be equal to original
magnetization direction):
   direction [0 0 1]* inv(R):
   [0  1  1] /sqrt(2)
   theta, phi [deg] of direction [0 0 1]* inv(R):
    45    90

   local rotational matrix inv(Rz(phi)*Ry(theta))
    0.0000    1.0000    0.0000
   -0.7071    0.0000   -0.7071
   -0.7071         0    0.7071



=============================================================

Demonstration of agreement /disagreement between different magnetization
directions (using min/max values of bands energies from case.scf).

Fe90M011.scf

       TEMP.-SMEARING WITH    0.00100 Ry
          -S / Kb           =  -0.04331916
          -(T*S)/2          =  -0.00001083
          Chem Pot          =   0.56146384
         Bandranges (emin - emax) and occupancy:
:BAN00005:   5   -3.203498   -3.174295  1.00000000
:BAN00006:   6   -3.171357   -3.149080  1.00000000
:BAN00007:   7   -0.054271    0.327752  1.00000000
:BAN00008:   8   -0.026481    0.356817  1.00000000
:BAN00009:   9    0.317615    0.404465  1.00000000
:BAN00010:  10    0.328272    0.456932  1.00000000
:BAN00011:  11    0.397931    0.565096  0.99967998
:BAN00012:  12    0.434403    0.567639  0.99876893
:BAN00013:  13    0.478999    0.586333  0.94739559
:BAN00014:  14    0.490366    0.724342  0.80699622
:BAN00015:  15    0.497871    0.727020  0.23269306
:BAN00016:  16    0.537935    0.743654  0.01446622
:BAN00017:  17    0.585301    1.240659  0.00000000
:BAN00018:  18    0.659633    1.253887  0.00000000
:BAN00019:  19    1.079409    2.316910  0.00000000
:BAN00020:  20    1.132400    2.325113  0.00000000


Fe90M110.scf

       TEMP.-SMEARING WITH    0.00100 Ry
          -S / Kb           =  -0.04331917
          -(T*S)/2          =  -0.00001083
          Chem Pot          =   0.56146383
         Bandranges (emin - emax) and occupancy:
:BAN00005:   5   -3.203498   -3.174295  1.00000000
:BAN00006:   6   -3.171357   -3.149080  1.00000000
:BAN00007:   7   -0.054271    0.327752  1.00000000
:BAN00008:   8   -0.026481    0.356817  1.00000000
:BAN00009:   9    0.317615    0.404465  1.00000000
:BAN00010:  10    0.328272    0.456932  1.00000000
:BAN00011:  11    0.397931    0.565096  0.99967998
:BAN00012:  12    0.434403    0.567639  0.99876893
:BAN00013:  13    0.478999    0.586333  0.94739559
:BAN00014:  14    0.490366    0.724342  0.80699622
:BAN00015:  15    0.497871    0.727020  0.23269306
:BAN00016:  16    0.537935    0.743654  0.01446621
:BAN00017:  17    0.585301    1.240659  0.00000000
:BAN00018:  18    0.659633    1.253887  0.00000000
:BAN00019:  19    1.079409    2.316910  0.00000000
:BAN00020:  20    1.132400    2.325113  0.00000000


Fe90M111.scf

       TEMP.-SMEARING WITH    0.00100 Ry
          -S / Kb           =  -0.04328447
          -(T*S)/2          =  -0.00001082
          Chem Pot          =   0.56146363
         Bandranges (emin - emax) and occupancy:
:BAN00005:   5   -3.197547   -3.174311  1.00000000
:BAN00006:   6   -3.171839   -3.149067  1.00000000
:BAN00007:   7   -0.054271    0.327751  1.00000000
:BAN00008:   8   -0.026481    0.356803  1.00000000
:BAN00009:   9    0.317627    0.403701  1.00000000
:BAN00010:  10    0.328310    0.456492  1.00000000
:BAN00011:  11    0.397957    0.564929  0.99967626
:BAN00012:  12    0.435619    0.567481  0.99877522
:BAN00013:  13    0.479115    0.586291  0.94739913
:BAN00014:  14    0.490860    0.724103  0.80700461
:BAN00015:  15    0.498155    0.726810  0.23269240
:BAN00016:  16    0.537926    0.743612  0.01445238
:BAN00017:  17    0.587267    1.240146  0.00000000
:BAN00018:  18    0.660066    1.251573  0.00000000
:BAN00019:  19    1.079410    2.316909  0.00000000
:BAN00020:  20    1.132678    2.325112  0.00000000


Fe90M-111.scf

       TEMP.-SMEARING WITH    0.00100 Ry
          -S / Kb           =  -0.04789797
          -(T*S)/2          =  -0.00001197
          Chem Pot          =   0.56163733
         Bandranges (emin - emax) and occupancy:
:BAN00005:   5   -3.198998   -3.175979  1.00000000
:BAN00006:   6   -3.170037   -3.147328  1.00000000
:BAN00007:   7   -0.054242    0.325683  1.00000000
:BAN00008:   8   -0.026461    0.358349  1.00000000
:BAN00009:   9    0.316407    0.401506  1.00000000
:BAN00010:  10    0.332239    0.456761  1.00000000
:BAN00011:  11    0.401182    0.562328  0.99984698
:BAN00012:  12    0.436197    0.564146  0.99870885
:BAN00013:  13    0.479456    0.589858  0.94809096
:BAN00014:  14    0.491500    0.724473  0.80608702
:BAN00015:  15    0.497176    0.727119  0.23313029
:BAN00016:  16    0.538120    0.744071  0.01413589
:BAN00017:  17    0.587521    1.240370  0.00000000
:BAN00018:  18    0.661842    1.251413  0.00000000
:BAN00019:  19    1.079479    2.316905  0.00000000
:BAN00020:  20    1.134084    2.325068  0.00000000

--
------------------------------------------------------------------
Mgr. Jaroslav Hamrle, Ph.D.
Institute of Physics, room F232
Faculty of Mathematics and Physics
Charles University
Ke Karlovu 5
121 16 Prague
Czech Republic

tel: +420-95155 1340
email: ham...@karlov.mff.cuni.cz
------------------------------------------------------------------

_______________________________________________
Wien mailing list
Wien@zeus.theochem.tuwien.ac.at
http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
SEARCH the MAILING-LIST at:  
http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/index.html

Reply via email to