- The DATASET "MillerIndices" stores the vectors of reciprocal space, namely $n_1$, $n_2$, and $n_3$ in following equation:
$$\dfrac{1}{\sqrt{V}}e^{i\vec{G}\cdot\vec{r}}=\dfrac{1}{\sqrt{V}}e^{i(n_1 \vec{a}_1+n_2\vec{b}_2+n_3\vec{b}_3)\cdot\vec{r}}$$
I assume that you have $m$ plane waves, then the data space should be $(m,3)$.
- As you said, the DATASET "evc" stores the wave function.
I further assume you have $n$ bands, then the data space should be $n \times (m \times 2)$ array. Due to the HDF5 library can't support the type of complex number, then the complex number generated by QE is stored as two neighborhood real numbers.
- The wave function in real space is calculated as follows:
$$\psi_{n\vec{k}}(\vec{r})=\dfrac{1}{\sqrt{V}}\sum_{\vec{G}}c_{n\vec{k}}(\vec{G}) e^{i(\vec{k}+\vec{G})\cdot\vec{r}}$$
in which
- $\vec{G}=n_1\vec{b}_1+n_2\vec{b}_2+n_3\vec{b}_3$
- $\vec{k}=k_1\vec{b}_1+k_2\vec{b}_2+k_3\vec{b}_3$
- $\vec{r}=r_1\vec{a}_1+r_2\vec{a}_2+r_3\vec{a}_3$
May it helps.
UPDATE from Question Author:
I found the following data structure for output hdf5 files here: https://gitlab.com/QEF/q-e/snippets/1869219. I believe this makes a complete answer.
HDF5 "wfc17.hdf5" {
GROUP "/" {
ATTRIBUTE "gamma_only" {
DATATYPE H5T_STRING {
STRSIZE 7;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): ".FALSE."
}
}
ATTRIBUTE "igwx" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 4572
}
}
ATTRIBUTE "ik" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 17
}
}
ATTRIBUTE "ispin" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 1
}
}
ATTRIBUTE "nbnd" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 36
}
}
ATTRIBUTE "ngw" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 4840
}
}
ATTRIBUTE "npol" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 1
}
}
ATTRIBUTE "scale_factor" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 1
}
}
ATTRIBUTE "xk" {
DATATYPE H5T_ARRAY { [3] H5T_IEEE_F64LE }
DATASPACE SCALAR
DATA {
(0): [ 0, 0.130217, 0.10252 ]
}
}
DATASET "MillerIndices" {
DATATYPE H5T_STD_I32LE
DATASPACE SIMPLE { ( 4572, 3 ) / ( 4572, 3 ) }
ATTRIBUTE "bg1" {
DATATYPE H5T_ARRAY { [3] H5T_IEEE_F64LE }
DATASPACE SCALAR
DATA {
(0): [ 0.67663, 0.390652, -0 ]
}
}
ATTRIBUTE "bg2" {
DATATYPE H5T_ARRAY { [3] H5T_IEEE_F64LE }
DATASPACE SCALAR
DATA {
(0): [ 0, 0.781305, 0 ]
}
}
ATTRIBUTE "bg3" {
DATATYPE H5T_ARRAY { [3] H5T_IEEE_F64LE }
DATASPACE SCALAR
DATA {
(0): [ 0, -0, 0.615118 ]
}
}
ATTRIBUTE "doc" {
DATATYPE H5T_STRING {
STRSIZE 77;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "Miller Indices of the wave-vectors, same ordering as wave-function components"
}
}
}
DATASET "evc" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 36, 9144 ) / ( 36, 9144 ) }
ATTRIBUTE "doc:" {
DATATYPE H5T_STRING {
STRSIZE 145;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "Wave Functions, (npwx,nbnd), each contiguous line represents a wave function, each complex coefficient is given by a couple of contiguous floats"
}
}
}
}