mirror of
https://github.com/triqs/dft_tools
synced 2024-09-12 05:38:31 +02:00
Update for hdf5 structure reference
- added missing corr to inequiv information - added a Vasp specific section and added missing information
This commit is contained in:
parent
5d406b22d9
commit
378f743b09
@ -32,7 +32,7 @@ k_dep_projection numpy.int
|
||||
SP numpy.int 1 for spin-polarised Hamiltonian, 0 for paramagnetic Hamiltonian.
|
||||
SO numpy.int 1 if spin-orbit interaction is included, 0 otherwise.
|
||||
charge_below numpy.float Number of electrons in the crystal below the correlated orbitals.
|
||||
Note that this is for compatibility with dmftproj.
|
||||
Note that this is for compatibility with dmftproj, otherwise set to 0
|
||||
density_required numpy.float Required total electron density. Needed to determine the chemical potential.
|
||||
The density in the projection window is then `density_required`-`charge_below`.
|
||||
symm_op numpy.int 1 if symmetry operations are used for the BZ sums,
|
||||
@ -48,15 +48,26 @@ shells list of dict {string:int}, dim n_shells x 4
|
||||
but `sort` can take only one value 0.
|
||||
n_corr_shells numpy.int Number of correlated atomic shells.
|
||||
If there are two correlated equivalent atoms in the unit cell, `n_corr_shells` is 2.
|
||||
n_inequiv_shells numpy.int Number of inequivalent atomic shells. Needs to be smaller than `n_corr_shells`.
|
||||
The up / downfolding routines mediate between all correlated shells and the
|
||||
actual inequivalent shells, by using the self-energy etc. for all equal shells
|
||||
belonging to the same class of inequivalent shells. The mapping is performed with
|
||||
information stored in `corr_to_inequiv` and `inequiv_to_corr`.
|
||||
corr_to_inequiv list of numpy.int, dim `n_corr_shells` mapping from correlated shells to inequivalent correlated shells.
|
||||
A list of length `n_corr_shells` containing integers, where same numbers mark
|
||||
equivalent sites.
|
||||
inequiv_to_corr list of numpy.int, dim `n_inequiv_shells` A list of length `n_inequiv_shells` containing list indices as integers pointing
|
||||
to the corresponding sites in `corr_to_inequiv`.
|
||||
corr_shells list of dict {string:int}, dim n_corr_shells x 6 Correlated orbital information.
|
||||
For each correlated shell, have a dict with keys
|
||||
['atom', 'sort', 'l', 'dim', 'SO', 'irep'].
|
||||
['atom', 'sort', 'l', 'dim', 'SO', 'irrep'].
|
||||
'atom' is the atom index, 'sort' defines the equivalency of the atoms,
|
||||
'l' is the angular quantum number, 'dim' is the dimension of the atomic shell.
|
||||
'SO' is one if spin-orbit is included, 0 otherwise, 'irep' is a dummy integer 0.
|
||||
use_rotations numpy.int 1 if local and global coordinate systems are used, 0 otherwise.
|
||||
rot_mat list of numpy.array.complex, Rotation matrices for correlated shells, if `use_rotations`.
|
||||
dim n_corr_shells x [corr_shells['dim'],corr_shells['dim']] Set to the unity matrix if no rotations are used.
|
||||
dim n_corr_shells x [corr_shells['dim'],corr_shells['dim']] These rotations are automatically applied for up / downfolding.
|
||||
Set to the unity matrix if no rotations are used.
|
||||
rot_mat_time_inv list of numpy.int, dim n_corr_shells If `SP` is 1, 1 if the coordinate transformation contains inversion, 0 otherwise.
|
||||
If `use_rotations` or `SP` is 0, give a list of zeros.
|
||||
n_reps numpy.int Number of irreducible representations of the correlated shell.
|
||||
@ -65,7 +76,7 @@ dim_reps list of numpy.int, dim n_reps
|
||||
e.g. [2,3] for eg/t2g subsets.
|
||||
T list of numpy.array.complex, Transformation matrix from the spherical harmonics to impurity problem basis
|
||||
dim n_inequiv_corr_shell x normally the real cubic harmonics).
|
||||
[max(corr_shell['dim']),max(corr_shell['dim'])] This matrix is used to calculate the 4-index U matrix.
|
||||
[max(corr_shell['dim']),max(corr_shell['dim'])] This matrix can be used to calculate the 4-index U matrix, not automatically done.
|
||||
n_orbitals numpy.array.int, dim [n_k,SP+1-SO] Number of Bloch bands included in the projection window for each k-point.
|
||||
If SP+1-SO=2, the number of included bands may depend on the spin projection up/down.
|
||||
proj_mat numpy.array.complex, Projection matrices from Bloch bands to Wannier orbitals.
|
||||
@ -73,11 +84,37 @@ proj_mat numpy.array.complex,
|
||||
(given by last two indices).
|
||||
For k-points with fewer bands, only the first entries are used, the rest are zero.
|
||||
e.g. if number of Bloch bands ranges from 4-6, all matrices are of size 6.
|
||||
bz_weights numpy.array.float, dim n_k Weights of the k-points for the k summation.
|
||||
bz_weights numpy.array.float, dim n_k Weights of the k-points for the k summation. Soon be replaced by `kpt_weights`
|
||||
hopping numpy.array.complex, Non-interacting Hamiltonian matrix for each k point.
|
||||
dim [n_k,SP+1-SO,max(n_orbitals),max(n_orbitals)] As for `proj_mat`, all matrices have to be of the same size.
|
||||
================= ====================================================================== =====================================================================================
|
||||
|
||||
Converter specific data
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This data is specific to the different converters and stored in the `dft_input`
|
||||
group as well.
|
||||
|
||||
For the Vasp converter:
|
||||
|
||||
================= ====================================================================== =====================================================================================
|
||||
Name Type Meaning
|
||||
================= ====================================================================== =====================================================================================
|
||||
kpt_basis numpy.array.float, dim 3x3 Basis for the k-point mesh, reciprocal lattice vectors.
|
||||
kpts numpy.array.float, dim n_k x 3 k-points given in reciprocal coordinates.
|
||||
kpt_weights numpy.array.float, dim n_k Weights of the k-points for the k summation.
|
||||
proj_or_hk string Switch determining whether the Vasp converter is running in projection mode `proj`, or
|
||||
in Hamiltonian mode `hk`. In Hamiltonian mode, the hopping matrix is written in
|
||||
orbital basis, whereas in projection mode hopping is written in band basis.
|
||||
proj_mat_csc numpy.array.complex, Projection matrices from Bloch bands to Wannier orbitals for Hamiltonian based `hk`
|
||||
dim approach. No site index is given, since hk is written in orbital basis. The last to
|
||||
[n_k,SP+1-SO, n_corr_shells x max(corr_shell['dim']), max(n_orbitals)] indices are a square matrix rotating from orbital to band space.
|
||||
dft_fermi_weights numpy.array.float, dim n_k x 1 x max(n_orbitals) DFT fermi weights (occupations) of KS eigenstates for each k-point for calculation
|
||||
(stored in dft_misc_input) of density matrix correction.
|
||||
band_window list of numpy.array.int , dim(SP+1-SO)x n_k x 2 Band windows as KS band indices in Vasp for each spin channel, and k-point. Needed for
|
||||
(stored in dft_misc_input) writing out the GAMMA file.
|
||||
|
||||
|
||||
|
||||
Symmetry operations
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
@ -127,8 +164,8 @@ It is furthermore assumed that all k-points have equal weight in the k-sum.
|
||||
Note that the input file should contain only the numbers, not the comments
|
||||
given in above example.
|
||||
|
||||
The Hamiltonian matrices can be taken, e.g., from Wannier90, which contructs
|
||||
the Hamiltonian in a maximally localised Wannier basis.
|
||||
The Hamiltonian matrices can be taken, e.g., from Wannier90, which constructs
|
||||
the Hamiltonian in a maximally localized Wannier basis.
|
||||
|
||||
Note that with this simplified converter, no full charge self consistent
|
||||
calculations are possible!
|
||||
|
@ -109,7 +109,7 @@ class SumkDFT(object):
|
||||
|
||||
# optional properties to load
|
||||
# soon bz_weights is depraced and replaced by kpt_weights, kpts_basis and kpts will become required to read soon
|
||||
optional_things_to_read = ['proj_mat_csc', 'proj_or_hk', 'kpts_basis','kpts','kpt_weights', 'kpt_basis']
|
||||
optional_things_to_read = ['proj_mat_csc', 'proj_or_hk', 'kpt_basis','kpts','kpt_weights']
|
||||
subgroup_present, self.optional_values_not_read = self.read_input_from_hdf(subgrp=self.dft_data, things_to_read=optional_things_to_read)
|
||||
|
||||
if self.symm_op:
|
||||
|
Loading…
Reference in New Issue
Block a user