3
0
mirror of https://github.com/triqs/dft_tools synced 2024-11-07 06:33:48 +01:00

Add doc to VASP converter concerning block structure

This commit is contained in:
Manuel 2018-07-09 10:50:36 -04:00
parent 2af2bac8d6
commit ba0cfa9013
7 changed files with 17 additions and 8 deletions

View File

@ -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.

View File

@ -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`).

View File

@ -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.

View File

@ -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)

View File

@ -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']

View File

@ -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