epsmat.h5
file format
Group: /mf_header
Content: Header from the WFN file.
Group: /eps_header
Content: Everything but the dielectric matrices.
Dataset: /eps_header/versionnumber
Type: integer
Rank: 0
Value: Version number of this particular file.
Dataset: /eps_header/flavor
Type: integer
Rank: 0
Value: 1 for Real, 2 for CPLX.
Group: /eps_header/params
Content: General parameters.
Dataset: /eps_header/params/matrix_type
Type: integer
Rank: 0
Value: Controls what matrix we compute: 0=epsilon^{-1} (epsmat.h5), 1=epsilon (not implemented), 2=chi0 (chimat.h5).
Dataset: /eps_header/params/has_advanced
Type: integer/logical
Rank: 0
Value: Whether we store the advanced matrix. This is the default in BerkeleyGW 1.1.x, but only for FF calculations with CPLX flavor.
Dataset: /eps_header/params/nmatrix
Type: integer
Rank: 0
Value: Number of matrices we store. If we store dielectric matrices, this is (has_advanced+1). For polarizability calculations, this is (has_advanced+1)*nspin.
Dataset: /eps_header/params/matrix_flavor
Type: integer
Rank: 0
Value: Whether we represent the dielectric matrix with real or complex numbers. This will be 2 (i.e., we store complex numbers), unless we have a static calculation run with the real code.
Dataset: /eps_header/params/icutv
Type: integer
Rank: 0
Value: Truncation flag. See Epsilon/inread.f90 for the meaning of each icutv.
Dataset: /eps_header/params/ecuts
Type: double
Rank: 0
Value: Cutoff for screened Coulomb interaction.
Dataset: /eps_header/params/nband
Type: integer
Rank: 0
Value: Total number of bands included in the epsilon calculation.
Dataset: /eps_header/params/efermi
Type: double
Rank: 0
Value: Fermi level determined by the code, in ryd.
Dataset: /eps_header/params/intraband_flag
Type: integer
Rank: 0
Value: See Epsilon/epsilon.inp.
Dataset: /eps_header/params/intraband_overlap_min
Type: double
Rank: 0
Value: See Epsilon/epsilon.inp.
Dataset: /eps_header/params/subsampling
Type: integer/logical
Rank: 0
Value: See Epsilon/epsilon.inp.
Dataset: /eps_header/params/subspace
Type: logical
Rank: 0
Value: true if the epsilon matrices have been generated using the static subspace approximation (only works in combination with full-frequency contour-deformation approach)
Group: /eps_header/qpoints
Content: Q-points-related datasets
Dataset: /eps_header/qpoints/nq
Type: integer
Rank: 0
Value: Number of q-points.
Dataset: /eps_header/qpoints/qpts
Rank: 2
Dims(1): 3 #(the three crystal coordinates)
Dims(2): nq
Value: Q-points.
Dataset: /eps_header/qpoints/qgrid
Type: integer
Rank: 1
Dims(1): 3
Value: Q-grid used in epsilon calculation.
Dataset: /eps_header/qpoints/qpt_done
Type: integer/logical
Rank: 1
Dims(1): nq
Value: 1 is the calculation for a particular q-point is done, 0 if not.
Group: /eps_header/freqs
Content: Frequency-related datasets
Dataset: /eps_header/freqs/freq_dep
Type: integer
Rank: 0
Value: Frequency dependency (same as in epsilon.inp and sigma.inp).
Dataset: /eps_header/freqs/nfreq
Type: integer
Rank: 0
Value: Number of frequency points.
Dataset: /eps_header/freqs/nfreq_imag
Type: integer
Rank: 0
Value: Number of imaginary frequency points. Used for CD calculations.
Dataset: /eps_header/freqs/freqs
Type: double
Rank: 2
Dims(1): 2 #(Real/complex part)
Dims(2): nfreq
Value: Frequencies, including broadening.
Group: /eps_header/gspace
Content: G-vectors-related datasets
Dataset: /eps_header/gspace/nmtx
Type: integer
Rank: 1
Dims(1): nq
Value: Number of matrix elements we actually compute for each q-point.
Dataset: /eps_header/gspace/nmtx_max
Type: integer
Rank: 0
Value: Same as maxval(nmtx(1:nq))
.
Dataset: /eps_header/gspace/ekin
Type: double
Rank: 2
Dims(1): ng
Dims(2): nq
Value: Kinetic energies |G+q|^2, in Rydberg. Note: the G-vectors are sorted wrt the RHO G-space |G|^2, and not wrt epsilon G-space |G+q|^2!
Dataset: /eps_header/gspace/gind_eps2rho
Type: integer
Rank: 2
Dims(1): ng
Dims(2): nq
Value: Given a row/column ig_eps from the epsilon matrix (in the epsilon G-space), map_eps2rho(ig_eps,iq) is the index of the corresponding G-vector in the RHO G-space.
Dataset: /eps_header/gspace/gind_rho2eps
Type: integer
Rank: 2
Dims(1): ng
Dims(2): nq
Value: Given a G-vector ig from the RHO G-space, map_rho2eps(ig,iq) is the corresponding row/column in the epsilon matrix (i.e., the index in the epsilon G-space).
Group: /eps_header/subspace
Content: Static subspace approximation (SSA) related parameters, it is created only if the calcuation is performed within the static subspace approximation (this forces to check the existence of the group and thus help to keep portability for .h5 matrices generated with older versions of the code). Again this works (for now) only in combination with full-frequency contour-deformation approach
Dataset: /eps_header/subspace/keep_full_eps_static
Type: logical
Rank: 0
Value: Set to true if the inverse static dielectric matrix has to be retained in the eps0mat.h5 and epsmat.h5
Dataset: /eps_header/subspace/matrix_in_subspace_basis
Type: logical
Rank: 0
Value: Set to true if the inverse dielectric matrices are stored in the subspace basis
Dataset: /eps_header/subspace/eps_eigenvalue_cutoff
Type: double
Rank: 0
Value: Set the cutoff for the selection of the eigenvectors which will build the static subspace (namely all eigenvectors with eigenvalue larger than eps_eigenvalue_cutoff)
Dataset: /eps_header/subspace/neig_max
Type: integer
Rank: 0
Value: Define the maximum size (number of eigenvectors) that will be used for the generation of the static subspace, can be given in input (see nbasis_subspace in epsilon.inp) otherwise it will be set automatically to 20% of the max nmtx.
Dataset: /eps_header/subspace/neig
Rank: 1
Dims(1): nq
Value: give the actual number of eigenvectors employed for the generation of the static subspace for each q-point
Group: /mats
Content: Matrix-elements-related datasets
Dataset: /mats/matrix
Type: double
Rank: 6
Dims(1): matrix_flavor
Dims(2): nmtx_max #rows of the matrix
Dims(3): nmtx_max #columns of the matrix
Dims(4): nfreq
Dims(5): nmatrix
Dims(6): nq
Value: Matrix elements (see matrix_type dataset). Rows/columns are sorted wrt epsilon(q) G-space, |q+G|^2. Note: for each q-point, we only really compute values up to nmtx(q).
Dataset: /mats/matrix-diagonal
Type: double
Rank: 3
Dims(1): matrix_flavor
Dims(2): nmtx_max #diagonal elements of the matrix
Dims(3): nq
Value: Static diagonal elements from "matrix" dataset. Not used when matrix_type==2.
Dataset: /mats/matrix_subspace
Type: double
Rank: 6
Dims(1): matrix_flavor
Dims(2): neig_max #rows of the matrix
Dims(3): neig_max #columns of the matrix
Dims(4): nfreq
Dims(5): nmatrix
Dims(6): nq
Value: Matrix elements of the inverse dielectric matrix in the subspace basis, for each q-point, we only really compute and store values up to neig(q)
Dataset: /mats/matrix_eigenvec
Type: double
Rank: 6
Dims(1): matrix_flavor
Dims(2): nmtx_max #rows of the matrix
Dims(3): neig_max #columns of the matrix
Dims(4): 1 #frequency independent
Dims(5): nmatrix
Dims(6): nq
Value: Eigenvectors of the static dielectric matrix for each q-point, we only really compute and store the rows/cols to nmtx(q)/neig(q) (defined with rank 6 so we can reuse the same routines used for the previous arrays)
Dataset: /mats/matrix_fulleps0
Type: double
Rank: 6
Dims(1): matrix_flavor
Dims(2): nmtx_max #rows of the matrix
Dims(3): nmtx_max #columns of the matrix
Dims(4): 1 #frequency independent
Dims(5): nmatrix
Dims(6): nq
Value: Static dielectric matrix for each q-point (if keep_full_eps_static is set to true), we only really compute and store the rows/cols to nmtx(q) (defined with rank 6 so we can reuse the same routines used for the previous arrays)