[Wien] problem with local rotation matrices in bcc Fe
Jaroslav Hamrle
hamrle at karlov.mff.cuni.cz
Tue Dec 19 15:36:30 CET 2017
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: hamrle at karlov.mff.cuni.cz
------------------------------------------------------------------
More information about the Wien
mailing list