mirror of
https://github.com/triqs/dft_tools
synced 2025-01-03 10:05:49 +01:00
start with Sr2RuO4 guide
This commit is contained in:
parent
31cb7a0ea4
commit
5fd74f73b7
@ -26,6 +26,7 @@ User guide
|
|||||||
guide/dftdmft_singleshot
|
guide/dftdmft_singleshot
|
||||||
guide/SrVO3
|
guide/SrVO3
|
||||||
guide/dftdmft_selfcons
|
guide/dftdmft_selfcons
|
||||||
|
guide/Sr2RuO4
|
||||||
guide/analysis
|
guide/analysis
|
||||||
guide/full_tutorial
|
guide/full_tutorial
|
||||||
guide/transport
|
guide/transport
|
||||||
|
40
doc/guide/Sr2RuO4.rst
Normal file
40
doc/guide/Sr2RuO4.rst
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
.. _Sr2RuO4:
|
||||||
|
|
||||||
|
Spin-orbit coupled calculations (single-shot)
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
There are two main ways of including the spin-orbit coupling (SO) term into
|
||||||
|
DFT+DMFT calculations:
|
||||||
|
|
||||||
|
- by performing a DFT calculation including SO and then doing a DMFT calculation on top, or
|
||||||
|
- by performing a DFT calculation without SO and then adding the SO term on the model level.
|
||||||
|
|
||||||
|
Treatment of SO in DFT
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
For now, TRIQS/DFTTools does only work with Wien2k when performing calculations with SO.
|
||||||
|
Of course, the general Hk framework is also possible.
|
||||||
|
But the way VASP treats SO is fundamentally different to the way Wien2k treats it and the interface does not handle that at the moment.
|
||||||
|
|
||||||
|
Therefore, this guide assumes that Wien2k is being used.
|
||||||
|
|
||||||
|
First, a Wien2k calculation including SO has to be performed.
|
||||||
|
For details, we refer the reader to the documentation of Wien2k.
|
||||||
|
The interface to Wien2k only works when the DFT calculation is done both spin-polarized and with SO (that means that you have to initialize the Wien2k calculation accordingly and then run with ``runsp -sp``).
|
||||||
|
|
||||||
|
Performing the projection
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Note that the final ``x lapw2 -almd -so -up`` and ``x lapw2 -almd -so -dn`` have to be run *on a single core*, which implies that, before, ``x lapw1 -up``, ``x lapw2 -dn``, and ``x lapwso -up`` have to be run in single-core mode (once).
|
||||||
|
|
||||||
|
In the ``case.indmftpr`` file, the spin-orbit flag has to be set to ``1`` for the correlated atoms.
|
||||||
|
For example, for the compound Sr\ :sub:`2`\ RuO\ :sub:`4`, with the struct file :download:`Sr2RuO4.struct <Sr2RuO4/Sr2RuO4.struct>`, we would e.g. use the ``indmftpr`` file :download:`found here <Sr2RuO4/Sr2RuO4.indmftpr>`.
|
||||||
|
Then, ``dmftproj -sp -so`` has to be called.
|
||||||
|
As usual, it is important to check for warnings (e.g., about eigenvalues of the overlap matrix) in the output of ``dmftproj`` and adapt the window until these warnings disappear.
|
||||||
|
|
||||||
|
Note that in presence of SO, it is not possible to project only onto the :math:`t_{2g}` subshell because it is not an irreducible representation.
|
||||||
|
A redesign of the orthonormalization procedure might happen in the long term, which might allow that.
|
||||||
|
|
||||||
|
We strongly suggest using the :py:meth:`.dos_wannier_basis` functionality of the :py:class:`.SumkDFTTools` class (see :download:`calculate_dos_wannier_basis.py <Sr2RuO4/calculate_dos_wannier_basis.py>`) and compare the Wannier-projected orbitals to the original DFT DOS (they should be more or less equal).
|
||||||
|
Note that, with SO, there are usually off-diagonal elements of the spectral function, which can also be imaginary.
|
||||||
|
The imaginary part can be found in the third column of the files ``DOS_wann_...``.
|
17
doc/guide/Sr2RuO4/Sr2RuO4.indmftpr
Normal file
17
doc/guide/Sr2RuO4/Sr2RuO4.indmftpr
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
4 ! Nsort
|
||||||
|
2 1 2 2 ! Multiplicities
|
||||||
|
3 ! lmax
|
||||||
|
complex ! Sr
|
||||||
|
0 0 0 0
|
||||||
|
0 0 0 0
|
||||||
|
cubic ! Ru
|
||||||
|
0 0 2 0 ! include d-shell as correlated
|
||||||
|
0 0 0 0 ! there are no irreps with SO
|
||||||
|
1 ! SO-flag
|
||||||
|
complex ! O1
|
||||||
|
0 0 0 0
|
||||||
|
0 0 0 0
|
||||||
|
complex ! O2
|
||||||
|
0 0 0 0
|
||||||
|
0 0 0 0
|
||||||
|
-0.7 1.4 ! energy window (Ry)
|
96
doc/guide/Sr2RuO4/Sr2RuO4.struct
Normal file
96
doc/guide/Sr2RuO4/Sr2RuO4.struct
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
Sr2RuO4 s-o calc. M|| 0.00 0.00 1.00
|
||||||
|
B 4 39_I
|
||||||
|
RELA
|
||||||
|
7.300012 7.300012 24.044875 90.000000 90.000000 90.000000
|
||||||
|
ATOM -1: X=0.00000000 Y=0.00000000 Z=0.35240000
|
||||||
|
MULT= 2 ISPLIT=-2
|
||||||
|
-1: X=0.00000000 Y=0.00000000 Z=0.64760000
|
||||||
|
Sr2+ NPT= 781 R0=.000010000 RMT= 2.26000 Z: 38.00000
|
||||||
|
LOCAL ROT MATRIX: 1.0000000 0.0000000 0.0000000
|
||||||
|
0.0000000 1.0000000 0.0000000
|
||||||
|
0.0000000 0.0000000 1.0000000
|
||||||
|
ATOM -2: X=0.00000000 Y=0.00000000 Z=0.00000000
|
||||||
|
MULT= 1 ISPLIT=-2
|
||||||
|
Ru4+ NPT= 781 R0=.000010000 RMT= 1.95000 Z: 44.00000
|
||||||
|
LOCAL ROT MATRIX: 1.0000000 0.0000000 0.0000000
|
||||||
|
0.0000000 1.0000000 0.0000000
|
||||||
|
0.0000000 0.0000000 1.0000000
|
||||||
|
ATOM -3: X=0.50000000 Y=0.00000000 Z=0.00000000
|
||||||
|
MULT= 2 ISPLIT= 8
|
||||||
|
-3: X=0.00000000 Y=0.50000000 Z=0.00000000
|
||||||
|
O 2- NPT= 781 R0=.000100000 RMT= 1.68000 Z: 8.00000
|
||||||
|
LOCAL ROT MATRIX: 1.0000000 0.0000000 0.0000000
|
||||||
|
0.0000000 1.0000000 0.0000000
|
||||||
|
0.0000000 0.0000000 1.0000000
|
||||||
|
ATOM -4: X=0.00000000 Y=0.00000000 Z=0.16350000
|
||||||
|
MULT= 2 ISPLIT=-2
|
||||||
|
-4: X=0.00000000 Y=0.00000000 Z=0.83650000
|
||||||
|
O 2- NPT= 781 R0=.000100000 RMT= 1.68000 Z: 8.00000
|
||||||
|
LOCAL ROT MATRIX: 1.0000000 0.0000000 0.0000000
|
||||||
|
0.0000000 1.0000000 0.0000000
|
||||||
|
0.0000000 0.0000000 1.0000000
|
||||||
|
16 NUMBER OF SYMMETRY OPERATIONS
|
||||||
|
0-1 0 0.00000000
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
1 A 2 so. oper. type orig. index
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0-1 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
2 A 3
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0 1 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
3 A 6
|
||||||
|
0-1 0 0.00000000
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
4 A 8
|
||||||
|
0 1 0 0.00000000
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
5 A 9
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0-1 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
6 A 11
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0 1 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
7 A 14
|
||||||
|
0 1 0 0.00000000
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
8 A 15
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0-1 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
9 B 1
|
||||||
|
0 1 0 0.00000000
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
10 B 4
|
||||||
|
0-1 0 0.00000000
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
11 B 5
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0-1 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
12 B 7
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0 1 0 0.00000000
|
||||||
|
0 0-1 0.00000000
|
||||||
|
13 B 10
|
||||||
|
0 1 0 0.00000000
|
||||||
|
1 0 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
14 B 12
|
||||||
|
0-1 0 0.00000000
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
15 B 13
|
||||||
|
-1 0 0 0.00000000
|
||||||
|
0 1 0 0.00000000
|
||||||
|
0 0 1 0.00000000
|
||||||
|
16 B 16
|
15
doc/guide/Sr2RuO4/calculate_dos_wannier_basis.py
Normal file
15
doc/guide/Sr2RuO4/calculate_dos_wannier_basis.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from triqs_dft_tools.converters.wien2k_converter import Wien2kConverter
|
||||||
|
from triqs_dft_tools import SumkDFTTools
|
||||||
|
|
||||||
|
filename = 'Sr2RuO4'
|
||||||
|
|
||||||
|
conv = Wien2kConverter(filename = filename,hdf_filename=filename+'.h5')
|
||||||
|
conv.convert_dft_input()
|
||||||
|
|
||||||
|
SK = SumkDFTTools(filename+'.h5')
|
||||||
|
mesh = (-10.0,10.0,500)
|
||||||
|
SK.dos_wannier_basis(broadening=(mesh[1]-mesh[0])/float(mesh[2]),
|
||||||
|
mesh=mesh,
|
||||||
|
save_to_file=True,
|
||||||
|
with_Sigma=False,
|
||||||
|
with_dc=False)
|
Loading…
Reference in New Issue
Block a user