diff --git a/doc/reference/h5structure.rst b/doc/reference/h5structure.rst index 5fd3bbf2..c45b54d3 100644 --- a/doc/reference/h5structure.rst +++ b/doc/reference/h5structure.rst @@ -13,50 +13,61 @@ In order to be used with the DMFT routines, the following data needs to be provi :program:`Main data`: There needs to be one subgroup for the main data of the calculation. The default name of this group is `dft_input`. Its contents are - * `energy_unit`, numpy.float. The unit of energy used for the calculation - - * `n_k`, numpy.int. The number of k-points used for the BZ integration. - - * `k_dep_projection`, numpy.int. If the dimension of the projection operators depend on the k-point, set to 1. Otherwise set to 0. - - * `SP`, numpy.int. 0 for paramagnetic hamiltonian, 1 for spin polarised hamiltonian. - - * `SO`, numpy.int. 1 if spin-orbit interaction is included, 0 otherwise. - - * `charge_below`, numpy.float. The number of electrons in the crystal below the correlated orbitals. Note that this is for compatibility with dmftproj. - - * `density_required`, numpy.float. Required total electron density, important for the determination of the chemical potential. The density within the projection window is then `density_required`-`charge_below`. - - * `symm_op`, numpy.int. 1 if symmetry operations are used for the BZ sums, 0 if all k-points are directly included in the input. - - * `n_shells`, numpy.int. Number of atomic shells for which post processing is possible. This is `not` the number of correlated orbitals! If you have two correlated atoms in the unit cell that are equivalent, `n_shells` is 2! - - * `shells`, list of dictionaries {string:int}. List dimension: `n_shells`, dictionary dimension: 4. Information about the atomic shells. For each shell, we give a dict with keys ['atom', 'sort', 'l', 'dim']. atom is the atom index, sort defines the equivalency of the atoms. For instance, with two equivalent atoms in the unit cell, atom runs from 0 to 1, but sort can take only one value 0. l is the angular quantum number, and dim the dimension of the atomic shell. - - * `n_corr_shells`, numpy.int. Number of correlated atomic shells, for which correlations are included. This includes atoms which are equivalent by symmetry. If you have two correlated atoms in the unit cell that are equivalent, `n_corr_shells` is 2! - - * `corr_shells`, list of dictionaries {string:int}. List dimension: `n_corr_shells`, dictionary dimension: 6. Information about the correlated orbitals. For each correlated shell, we give a dict with keys ['atom', 'sort', 'l', 'dim', 'SO', 'irep']. As for `shells`, atom is the atom index, sort defines the equivalency of the atoms. For instance, with two equivalent atoms in the unit cell, atom runs from 0 to 1, but sort can take only one value 0. l is the angular quantum number, and dim the dimension of the atomic shell. If spin-orbit is included in the calculation, SO is 1, otherwise 0. irep is a dummy integer, set to 0. - - * `use_rotations`, numpy.int. If local and global coordinate systems are used, this falg is set to 1. Otherwise set to 0. - - * `rot_mat`, list of numpy.array.complex. If `use_rotations` is set, then this contains a list of the rotation matrices. You have to give a rotation matrix for each correlated atomic shell, i.e. the length of the list is `n_corr_shells`, the dimension of the matrices is given by the dimension of the atomic shell (c.f. `corr_shells`). You have to give at least the unity matrix, if no rotations are used! - - * `rot_mat_time_inv`, list of numpy.int, length `n_corr_shells`. This is needed only if `SP` is 1. For each correlated shell, set 1 if the coordinate transformation contains inversion, 0 otherwise. If no rotations are used, or `SP` is 0, give a list of zeros. - - * `n_reps`, numpy.int. Number of irreducible representation of the correlated shell. For instance, if you plan to use the t2g/eg splitting, then set it to 2. - - * `dim_reps`, list of numpy.int, length `n_reps`. Dimension of the representations. In above example, it is [2,3] for eg and t2g sub sets. - - * `T`, list of numpy.array.complex. For each `inequivalent` correlated shell, this is a general transformation matrix from the spherical harmonics basis to the basis used for the impurity problem, which is most of the time the real cubic harmonics basis. This matrix is used to calculate the 4-index U matrix. - - * `n_orbitals`, numpy.array.int. Dimension [n_k, SP + 1 - SO]. It contains the number of Bloch bands that are included in the projection window for each k point. The second dimension is 1, unless doing spin-polarised DFT calculations without spin orbit coupling, where it is 2. In that case, the number of included bands might depend on the spin projection up/down. - - * `proj_mat`, numpy.array.complex. Dimension [n_k, SP + 1 - SO, n_corr_shells, Max(corr_shell dimensions), Max(n_orbitals)]. This array contains the projection matrices from Bloch bands to Wannier orbitals, where the last two indices are the matrix indices. For efficient storage reasons, all the matrices have to be of the same size. For instance, if the number of Bloch bands has values 4, 5 and 6, all matrices are initialised with size 6. For the k-points with less bands, only the first entries are used, the rest is just zero. - - * `bz_weights`, numpy.array.float. A one-dimensional array of length n_k containing the weights of the k-points for the k summation. - - * `hopping`, numpy.array.complex. Dimension [n_k, SP + 1 - SO, Max(n_orbitals), Max(n_orbitals)]. This array contains the non-interacting Hamiltonian in matrix form at each k point. Again, similar to the projection matrices, all matrices have to be of the same size. - +================= ====================================================================== ===================================================================================== +Name Type Meaning +================= ====================================================================== ===================================================================================== +energy_unit numpy.float Unit of energy used for the calculation. +n_k numpy.int Number of k-points used for the BZ integration. +k_dep_projection numpy.int 1 if the dimension of the projection operators depend on the k-point, + 0 otherwise. +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. +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, + 0 if all k-points are directly included in the input. +n_shells numpy.int Number of atomic shells for which post-processing is possible. + Note: this is `not` the number of correlated orbitals! + If there are two equivalent atoms in the unit cell, `n_shells` is 2. +shells list of dict {string:int}, dim n_shells x 4 Atomic shell information. + For each shell, have a dict with keys ['atom', 'sort', 'l', 'dim']. + '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. + e.g. for two equivalent atoms in the unit cell, `atom` runs from 0 to 1, + 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. +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' 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. +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. + e.g. 2 if eg/t2g splitting is used. +dim_reps list of numpy.int, dim n_reps Dimension of the representations. + 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. +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. + dim [n_k,SP+1-SO,n_corr_shells,max(corr_shell['dim']),max(n_orbitals)] For efficient storage reasons, all matrices must be of the same size + (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. +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. +================= ====================================================================== ===================================================================================== :program:`Symmetry operations`: In this subgroup we store all the data for applying the symmetry