Electronic Configuration File#

Introduction#

The electronic configuration file is an HDF5 file containing all the information about the electronic states in the target material. Available electronic states are shown below. These data must be kept inside the HDF5 folder specified, e.g., to add initial electronic states in the plane wave basis, put the data specified below in the, init/bloch/PW_basis/ folder inside the HDF5 file.

Warning

Fortran is a column-major language, which affects reading/writing of multi-dimensional datasets with HDF5. For example, for an \(n \times m\) matrix to be read in to Fortran, it must be saved as an \(m \times n\) matrix if the language creating the HDF5 file is row-major (e.g., python).

Electronic State Approximations#

Bloch States#

bloch/PW_basis: Plane Wave (PW) basis#

Equations

\[u_{i, \mathbf{k}, s}(\mathbf{x}) = \sum_{\mathbf{G}} \, e^{i \mathbf{G} \cdot \mathbf{x}} \widetilde{u}_{i, \mathbf{k}, \mathbf{G}, s}\]
  • config

    • G_list_red - List of \(\mathbf{G}\) vectors, in reduced coordinates, the Fourier components of the Bloch wave functions, \(\widetilde{u}_\mathbf{G}\), are computed for.

      • Dim: [\(N_\mathbf{G}\), 3]

  • state_info

    • Zeff_list - List of \(Z_\text{eff}\) parameters for each state. Only used when transitioning to a bloch/single_PW state.

      • Dim: [\(N\)]

    • energy_list - Energy, \(\omega\), of each state.

      • Units: \(\text{eV}\)

      • Dim: [\(N\)]

    • i_list - Band index, \(i\), of each state.

      • Dim: [\(N\)]

    • jac_list - List of jacobians, \(j_I\), of discretized state sum. Let \(N'\) be the exact number of initial states. Therefore, in theory, to sum over the states one applies \((1/N') \sum_{I'}\). However in practice \(N'\) is usually very, very large, and the sum must be discretized, \((1/N') \sum_{I'} \rightarrow \sum_I j_I\) and this array contains that jacobian for each state.

      • Dim: [\(N\)]

    • k_id_list - The \(\mathbf{k}\) index of each state, i.e., \(i\) if the \(\mathbf{k}\) vectors are indexed by \(i\).

      • Dim: [\(N\)]

    • k_vec_red_list - \(\mathbf{k}\) vectors for each state in reduced coordinates.

      • Dim: [\(N\), 3]

    • u_FT_c

      • n_<n> - Imaginary part of \(\widetilde{u}_\mathbf{G}\) for the state <n>, \(1 \leq \langle n \rangle \leq N\). Spin components can be specified by increasing the second dimension of this dataset to 2, i.e., \(N_s = 2\).

        • Dim: [\(N_\mathbf{G}\), \(N_s\)]

    • u_FT_r

      • n_<n> - Real part of \(\widetilde{u}_\mathbf{G}\) for the state <n>, \(1 \leq \langle n \rangle \leq N\). Spin components can be specified by increasing the second dimension of this dataset to 2, i.e., \(N_s = 2\).

        • Dim: [\(N_\mathbf{G}\), \(N_s\)]

bloch/STO_basis: Slater Type Orbital (STO) basis#

Equations

\[\begin{split}u_{\kappa, n, \ell, m, \mathbf{k}}(\mathbf{x}) & = \sqrt{\Omega} \sum_{\mathbf{r}} e^{- i \mathbf{k} \cdot \mathbf{y}_{\mathbf{r}, \kappa}} \sum_j C_{j, \ell, n, \kappa} R_\text{STO}(y_{\mathbf{r}; \kappa}, Z_{j, \ell, \kappa}, n_{j, \ell, \kappa}) Y_l^m(\hat{\mathbf{y}}_{\mathbf{r}, \kappa})\, , \\ R_\text{STO}(r; Z, n) & = a_0^{-3/2} \frac{(2Z)^{n + \frac{1}{2}}}{\sqrt{(2n)!}} \left( \frac{r}{a_0} \right)^{n - 1} e^{-Zr / a_0}\end{split}\]
  • config

    • n_r_vec_grid - Number of \(\mathbf{r}\) vectors to keep in each direction. For example, n_r_vec_grid = [3, 3, 3] keeps all \(\mathbf{r} \in \{ r_1, r, 2, r_3\}, -1 \leq r_i \leq 1\).

      • Dim: [3]

    • n_x_grid - Number of \(\mathbf{x}\) points in the unit cell to compute the wave functions for (in each direction). \(\begin{align} \mathbf{x}_{ijk} = \{ \frac{i - 1}{N_1}, \frac{j - 1}{N_2}, \frac{k - 1}{N_3} \} \end{align}\) in reduced coordinates.

      • Dim: [3]

  • state_info

    • Zeff_list - List of \(Z_\text{eff}\) parameters for each state. Only used when transitioning to a bloch/single_PW state.

      • Dim: [\(N\)]

    • energy_list - Energy, \(\omega\), of each state.

      • Units: \(\text{eV}\)

      • Dim: [\(N\)]

    • i_list - Band index, \(i\), of each state.

      • Dim: [\(N\)]

    • jac_list - List of jacobians, \(j_I\), of discretized state sum. Let \(N'\) be the exact number of initial states. Therefore, in theory, to sum over the states one applies \((1/N') \sum_{I'}\). However in practice \(N'\) is usually very, very large, and the sum must be discretized, \((1/N') \sum_{I'} \rightarrow \sum_I j_I\) and this array contains that jacobian for each state.

      • Dim: [\(N\)]

    • k_id_list - The \(\mathbf{k}\) index of each state, i.e., \(i\) if the \(\mathbf{k}\) vectors are indexed by \(i\).

      • Dim: [\(N\)]

    • k_vec_red_list - \(\mathbf{k}\) vectors for each state in reduced coordinates.

      • Dim: [\(N\), 3]

    • coeff_list - Collection of STO coefficients for each state. Each state is represented by 4 length \(N_j\) vectors, \(\{ \mathbf{n}, \mathbf{Z}, \mathbf{N}, \mathbf{C} \}\). The \(\mathbf{n}\) coefficients for the nth state are stored in [n, :, 1]. The \(\mathbf{Z}\) coefficients for the nth state are stored in [n, :, 2]. The \(\mathbf{N}\) coefficients for the nth state are stored in [n, :, 3]. The \(\mathbf{C}\) coefficients for the nth state are stored in [n, :, 4].

      • Dim: [\(N\), \(N_j\), 4]

    • eq_pos_red_list - Equilibrium position (in reduced coordinates) of the ion each state is associated with.

      • Dim: [\(N\), 3]

    • nj_list - Number of expansion coefficients for each state.

      • Dim: [\(N\)]

    • nlm_list - \(n, \ell, m\) quantum numbers of each state, stored in that order.

      • Dim: [\(N\), 3]

bloch/single_PW: Single PW#

Equations

\[u_{\mathbf{p}}(\mathbf{x}) = e^{i \mathbf{G}(\mathbf{p}) \cdot \mathbf{x}}\]
  • config

    • n_x_grid - Number of \(\mathbf{x}\) points in the unit cell to compute the wave functions for (in each direction). \(\begin{align} \mathbf{x}_{ijk} = \{ \frac{i - 1}{N_1}, \frac{j - 1}{N_2}, \frac{k - 1}{N_3} \} \end{align}\) in reduced coordinates.

      • Dim: [3]

  • state_info

    • Zeff_list - List of \(Z_\text{eff}\) parameters for each state. Only used when transitioning to a bloch/single_PW state.

      • Dim: [\(N\)]

    • energy_list - Energy, \(\omega\), of each state.

      • Units: \(\text{eV}\)

      • Dim: [\(N\)]

    • i_list - Band index, \(i\), of each state.

      • Dim: [\(N\)]

    • jac_list - List of jacobians, \(j_I\), of discretized state sum. Let \(N'\) be the exact number of initial states. Therefore, in theory, to sum over the states one applies \((1/N') \sum_{I'}\). However in practice \(N'\) is usually very, very large, and the sum must be discretized, \((1/N') \sum_{I'} \rightarrow \sum_I j_I\) and this array contains that jacobian for each state.

      • Dim: [\(N\)]

    • k_id_list - The \(\mathbf{k}\) index of each state, i.e., \(i\) if the \(\mathbf{k}\) vectors are indexed by \(i\).

      • Dim: [\(N\)]

    • p_vec_list - List of \(\mathbf{p}\) vectors for each state.

      • Dim: [\(N\), 3]