Wavefunction File formats#
The trial wavefunction in AFQMC is typically a linear combination of Slater determinants,
where \(C_n\) is a complex-valued coefficient, and \(|\Phi_n\rangle\) are Slater determinants which are not necessarily orthogonal to each other. Of course, each Slater determinant consists of some set of single-particle orbitals, \(\{ \psi_p \}\), such that,
where \(\{\phi_i\}\) are the chosen orthonormal basis set orbitals. Slater determinants can either be represented explicitly as a Slater matrix,
where \(M,N\) are the number of basis functions and electrons, respectively, or in terms of an “occupation vector”, which is simply a list of orbital indices which should be occupied. See the SAFIRE tutorials for tutorials and examples on generating and writing trial wavefunctions.
SAFIRE implements two basic types of trial wavefunction:
“particle-hole” multi-Slater determinant (ph-mSD) trial wavefunctions which is a configuration interaction-like wavefunction where \(\langle \Phi_n |\Phi_m\rangle = \delta_{nm} \forall n,m\). In this case, the Slater determinants are specified in terms of a set of orbitals, and a list of \(C_n\) and corresponding occupancy vectors. See the HDF5 file format description in PHMSD for more.
non-orthogonal multi-slater Determinant (NOMSD) trial wavefunction where strictly \(\langle \Phi_n |\Phi_m\rangle \neq 0 \forall n,m\). In this case, the Slater determinants are specified as a list of \(C_n\) and corresponding Slater matrices. See the HDF5 file format description in NOMSD for more.
We’ll explore each of these wavefunction types in more detail below.
Note
Using the ph-mSD trial wavefunction is recommended when using a large number of determinants since it is significantly more memory efficient than the NOMSD trial wavefunction, and since, in some cases, fast Woodbury updates can be applied.
Warning
When using NOMSD trial wavefunctions, it is important that each Slater determinant has a non-zero overlap with all other Slater determinants to avoid singular values. Use ph-mSD for orthogonal expansions of Slater determinants.
AFQMC allows for two types of multi-determinant trial wavefunctions: non-orthogonal multi Slater determinants (NOMSD) or SHCI/CASSCF style particle-hole multi Slater determinants (PHMSD).
NOMSD#
h5dump -n wfn.h5
HDF5 "wfn.h5" {
FILE_CONTENTS {
group /
group /Wavefunction
group /Wavefunction/NOMSD
dataset /Wavefunction/NOMSD/Psi0_alpha
dataset /Wavefunction/NOMSD/Psi0_beta
group /Wavefunction/NOMSD/PsiT_0
dataset /Wavefunction/NOMSD/PsiT_0/data_
dataset /Wavefunction/NOMSD/PsiT_0/dims
dataset /Wavefunction/NOMSD/PsiT_0/jdata_
dataset /Wavefunction/NOMSD/PsiT_0/pointers_begin_
dataset /Wavefunction/NOMSD/PsiT_0/pointers_end_
group /Wavefunction/NOMSD/PsiT_1
dataset /Wavefunction/NOMSD/PsiT_1/data_
dataset /Wavefunction/NOMSD/PsiT_1/dims
dataset /Wavefunction/NOMSD/PsiT_1/jdata_
dataset /Wavefunction/NOMSD/PsiT_1/pointers_begin_
dataset /Wavefunction/NOMSD/PsiT_1/pointers_end_
dataset /Wavefunction/NOMSD/ci_coeffs
dataset /Wavefunction/NOMSD/dims
}
}
Note that the \(\alpha\) components of the trial wavefunction are stored under
PsiT_{2n} and the \(\beta\) components are stored under PsiT_{2n+1}.
/Wavefunction/NOMSD/Psi0_alpha\([M,N_\alpha]\) dimensional array \(\alpha\) component of initial walker wavefunction./Wavefunction/NOMSD/Psi0_beta\([M,N_\beta]\) dimensional array for \(\beta\) initial walker wavefunction./Wavefunction/NOMSD/PsiT_{2n}/data_Array of length \(nnz\) containing non-zero elements of \(n\)-th \(\alpha\) component of trial wavefunction walker wavefunction. Note the conjugate transpose of the Slater matrix is stored./Wavefunction/NOMSD/PsiT_{2n}/dimsArray of length 3 containing \([M,N_{\alpha},nnz]\) where \(nnz\) is the number of non-zero elements of this Slater matrix/Wavefunction/NOMSD/PsiT_{2n}/jdata_CSR indices array./Wavefunction/NOMSD/PsiT_{2n}/pointers_begin_CSR format begin index pointer array./Wavefunction/NOMSD/PsiT_{2n}/pointers_end_CSR format end index pointer array./Wavefunction/NOMSD/ci_coeffs\(N_D\) length array of ci coefficients. Stored as complex numbers./Wavefunction/NOMSD/dimsInteger array of length 5 containing \([M,N_\alpha,N_\beta,\) walker_type \(,N_D]\)
PHMSD#
h5dump -n wfn.h5
HDF5 "wfn.h5" {
FILE_CONTENTS {
group /
group /Wavefunction
group /Wavefunction/PHMSD
dataset /Wavefunction/PHMSD/Psi0_alpha
dataset /Wavefunction/PHMSD/Psi0_beta
dataset /Wavefunction/PHMSD/ci_coeffs
dataset /Wavefunction/PHMSD/dims
dataset /Wavefunction/PHMSD/occs
dataset /Wavefunction/PHMSD/type
}
}
/Wavefunction/NOMSD/Psi0_alpha\([M,N_\alpha]\) dimensional array \(\alpha\) component of initial walker wavefunction./Wavefunction/NOMSD/Psi0_beta\([M,N_\beta]\) dimensional array for \(\beta\) initial walker wavefunction./Wavefunction/PHMSD/ci_coeffs\(N_D\) length array of ci coefficients. Stored as complex numbers./Wavefunction/PHMSD/dimsInteger array of length 5 containing \([M,N_\alpha,N_\beta,\) walker_type \(,N_D]\)/Wavefunction/PHMSD/occsInteger array of length \((N_\alpha+N_\beta)*N_D\) describing the determinant occupancies. For example if \((N_\alpha=N_\beta=2)\) and \(N_D=2\), \(M=4\), and if \(|\Psi_\mathrm{T}\rangle = |0,1\rangle|0,1\rangle + |0,1\rangle|0,2\rangle>\) then occs = \([0, 1, 4, 5, 0, 1, 4, 6]\). Note that \(\beta\) occupancies are displaced by \(M\)./Wavefunction/PHMSD/typeinteger 0/1. 1 implies trial wavefunction is written in different basis than the underlying basis used for the integrals. If so a matrix of orbital coefficients is required to be written in the NOMSD format. If 0 then assume wavefunction is in same basis as integrals.