mirror of
https://github.com/triqs/dft_tools
synced 2024-12-22 04:13:47 +01:00
Add doc to VASP converter concerning block structure
This commit is contained in:
parent
2af2bac8d6
commit
ba0cfa9013
@ -183,7 +183,7 @@ will be stored in a separate subgroup in the hdf5 file, called `dmft_output`.
|
|||||||
Note that this script performs 15 DMFT cycles, but does not check for
|
Note that this script performs 15 DMFT cycles, but does not check for
|
||||||
convergence. Of course, it would be possible to build in convergence criteria.
|
convergence. Of course, it would be possible to build in convergence criteria.
|
||||||
A simple check for convergence can be also done if you store multiple quantities
|
A simple check for convergence can be also done if you store multiple quantities
|
||||||
of each iteration and analyze the convergence by hand. In general, it is advisable
|
of each iteration and analyse the convergence by hand. In general, it is advisable
|
||||||
to start with a lower statistics (less measurements), but then increase it at a
|
to start with a lower statistics (less measurements), but then increase it at a
|
||||||
point close to converged results (e.g. after a few initial iterations). This helps
|
point close to converged results (e.g. after a few initial iterations). This helps
|
||||||
to keep computational costs low during the first iterations.
|
to keep computational costs low during the first iterations.
|
||||||
|
@ -263,6 +263,15 @@ For the conversion to a h5 file we use on the python level (in analogy to the Wi
|
|||||||
Converter = VaspConverter(filename = filename)
|
Converter = VaspConverter(filename = filename)
|
||||||
Converter.convert_dft_input()
|
Converter.convert_dft_input()
|
||||||
|
|
||||||
|
As usual, the resulting h5-file can then be used with the SumkDFT class.
|
||||||
|
|
||||||
|
Note that the automatic detection of the correct blockstructure might fail for VASP inputs.
|
||||||
|
This can be circumvented by increase the :class:`SumkDFT <dft.sumk_dft.SumkDFT>` threshold to e.g.::
|
||||||
|
|
||||||
|
SK.analyse_block_structure(threshold = 1e-4)
|
||||||
|
|
||||||
|
However, only do this after a careful study of the density matrix and the dos in the wannier basis.
|
||||||
|
|
||||||
A general H(k)
|
A general H(k)
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
@ -445,7 +454,7 @@ In our `Pnma`-LaVO\ :sub:`3` example, for instance, we could use::
|
|||||||
where the ``x=-1,1,0`` option indicates that the V--O bonds in the octahedra are
|
where the ``x=-1,1,0`` option indicates that the V--O bonds in the octahedra are
|
||||||
rotated by (approximatively) 45 degrees with respect to the axes of the `Pbnm` cell.
|
rotated by (approximatively) 45 degrees with respect to the axes of the `Pbnm` cell.
|
||||||
|
|
||||||
The converter will analyze the matrix elements of the local Hamiltonian
|
The converter will analyse the matrix elements of the local Hamiltonian
|
||||||
to find the symmetry matrices `rot_mat` needed for the global-to-local
|
to find the symmetry matrices `rot_mat` needed for the global-to-local
|
||||||
transformation of the basis set for correlated orbitals
|
transformation of the basis set for correlated orbitals
|
||||||
(see section :ref:`hdfstructure`).
|
(see section :ref:`hdfstructure`).
|
||||||
|
@ -58,7 +58,7 @@ class SumkDFT(object):
|
|||||||
If True, the local Green's function matrix for each spin is divided into smaller blocks
|
If True, the local Green's function matrix for each spin is divided into smaller blocks
|
||||||
with the block structure determined from the DFT density matrix of the corresponding correlated shell.
|
with the block structure determined from the DFT density matrix of the corresponding correlated shell.
|
||||||
|
|
||||||
Alternatively and additionally, the block structure can be analyzed using :meth:`analyse_block_structure <dft.sumk_dft.SumkDFT.analyse_block_structure>`
|
Alternatively and additionally, the block structure can be analysed using :meth:`analyse_block_structure <dft.sumk_dft.SumkDFT.analyse_block_structure>`
|
||||||
and manipulated using the SumkDFT.block_structre attribute (see :class:`BlockStructure <dft.block_structure.BlockStructure>`).
|
and manipulated using the SumkDFT.block_structre attribute (see :class:`BlockStructure <dft.block_structure.BlockStructure>`).
|
||||||
dft_data : string, optional
|
dft_data : string, optional
|
||||||
Name of hdf5 subgroup in which DFT data for projector and lattice Green's function construction are stored.
|
Name of hdf5 subgroup in which DFT data for projector and lattice Green's function construction are stored.
|
||||||
|
@ -5,7 +5,7 @@ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/${all_h5_files} DESTINATION ${CMAKE_CURREN
|
|||||||
FILE(COPY SrVO3.pmat SrVO3.struct SrVO3.outputs SrVO3.oubwin SrVO3.ctqmcout SrVO3.symqmc SrVO3.sympar SrVO3.parproj SrIrO3_rot.h5 hk_convert_hamiltonian.hk LaVO3-Pnma_hr.dat LaVO3-Pnma.inp DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
FILE(COPY SrVO3.pmat SrVO3.struct SrVO3.outputs SrVO3.oubwin SrVO3.ctqmcout SrVO3.symqmc SrVO3.sympar SrVO3.parproj SrIrO3_rot.h5 hk_convert_hamiltonian.hk LaVO3-Pnma_hr.dat LaVO3-Pnma.inp DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
# List all tests
|
# List all tests
|
||||||
set(all_tests wien2k_convert hk_convert w90_convert sumkdft_basic srvo3_Gloc srvo3_transp sigma_from_file blockstructure analyze_block_structure_from_gf analyze_block_structure_from_gf2)
|
set(all_tests wien2k_convert hk_convert w90_convert sumkdft_basic srvo3_Gloc srvo3_transp sigma_from_file blockstructure analyse_block_structure_from_gf analyse_block_structure_from_gf2)
|
||||||
|
|
||||||
foreach(t ${all_tests})
|
foreach(t ${all_tests})
|
||||||
add_test(NAME ${t} COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/${t}.py)
|
add_test(NAME ${t} COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/${t}.py)
|
||||||
|
@ -32,13 +32,13 @@ G_new = SK.analyse_block_structure_from_gf(G)
|
|||||||
# the new block structure
|
# the new block structure
|
||||||
block_structure2 = SK.block_structure.copy()
|
block_structure2 = SK.block_structure.copy()
|
||||||
|
|
||||||
with HDFArchive('analyze_block_structure_from_gf.out.h5','w') as ar:
|
with HDFArchive('analyse_block_structure_from_gf.out.h5','w') as ar:
|
||||||
ar['bs1'] = block_structure1
|
ar['bs1'] = block_structure1
|
||||||
ar['bs2'] = block_structure2
|
ar['bs2'] = block_structure2
|
||||||
|
|
||||||
# check whether the block structure is the same as in the reference
|
# check whether the block structure is the same as in the reference
|
||||||
with HDFArchive('analyze_block_structure_from_gf.out.h5','r') as ar,\
|
with HDFArchive('analyse_block_structure_from_gf.out.h5','r') as ar,\
|
||||||
HDFArchive('analyze_block_structure_from_gf.ref.h5','r') as ar2:
|
HDFArchive('analyse_block_structure_from_gf.ref.h5','r') as ar2:
|
||||||
assert ar['bs1'] == ar2['bs1'], 'bs1 not equal'
|
assert ar['bs1'] == ar2['bs1'], 'bs1 not equal'
|
||||||
a1 = ar['bs2']
|
a1 = ar['bs2']
|
||||||
a2 = ar2['bs2']
|
a2 = ar2['bs2']
|
@ -3,7 +3,7 @@ from sumk_dft import SumkDFT
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from pytriqs.utility.comparison_tests import assert_block_gfs_are_close
|
from pytriqs.utility.comparison_tests import assert_block_gfs_are_close
|
||||||
|
|
||||||
# here we test the SK.analyze_block_structure_from_gf function
|
# here we test the SK.analyse_block_structure_from_gf function
|
||||||
# with GfReFreq, GfReTime
|
# with GfReFreq, GfReTime
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user