Let's go back to the original paper where the fcidump format was first proposed: A determinant based full configuration interaction program by Peter Knowles (lead author of the MOLPRO program, along with Hans-Joachim Werner) and Nick Handy in 1989. This algorithm is still used by a lot of people today, and is considered one of the most efficient ways to do FCI. Some people call this a string-based approach.
In a "string-based" approach, Slater determinants are represented by a binary string, such as:
$$\tag{1}
|\Phi\rangle =|11111111110010000000000000\rangle.
$$
Here the 1s, 2s, 2px, 2py, and 2pz orbitals are all doubly occupied (the first 10 ones), and the 3s orbital is completely empty, then the 3px orbital has one electron, then everything else in the basis set is empty. This is a single-excitation of the HF determinant which would look like:
$$\tag{2}
|\textrm{HF}\rangle = |11111111111000000000000000\rangle.
$$
You can now enumerate all possible "strings" that you wish to allow, based on your molecule's spatial symmetry and spin symmetry (for example), and label these determinants as $|\Phi_i\rangle$ where $i$ goes from 1 (for the reference determinant, which is usually the Hartree-Fock determinant) to the number of determinants in your list.
Now, the question you ask is how to get the matrix elements:
$$\tag{3}
H_{ij} = \langle \Phi_i|\hat{H} |\Phi_j \rangle,
$$
for the following Hamiltonian operator:
$$\tag{4}\hat{H} = \sum_{pq} h_{pq} \hat{a}_p^\dagger \hat{a}_q + \frac12 \sum_{pqrs} h_{pqrs} \hat{a}_p^\dagger \hat{a}_q^\dagger \hat{a}_r \hat{a}_s + \hat{H}_\textrm{nuc}.$$
You have all the one-electron integrals $H_{pq}$ and $H_{pqrs}$ from the FCIDUMP
file already, so now you just have to apply the creation and annihilation operators to the bit-strings, remembering that single-excitations will remove an electron (i.e. a 1 in the bit-string) from its present orbital and place it into one of the unoccupied orbitals (i.e. a 0 in the bit-string), and a double-excitation will do this twice.
- I would not recommend doing this for a large basis set or a large number of electrons, because your number of matrix elements will explode very quickly.
- I would also recommend that while writing a program to do this can be a good exercise for a beginner, it would be best to stick to a well-established software if you want to do any serious calculations, rather than re-inventing the wheel.
In your question you said that you might try to implement FCIQMC. If so, please do not store the whole $H_{ij}$. The whole point of FCIQMC is that you do not store the whole FCI matrix, but you effectively only use parts of it as they are needed. There's an open source FCIQMC code called NECI (N-electron Configuration Interaction) which can be downloaded from GitHub here and there's also a paper about it for which I'm a co-author. There's a lot of work that went into this software, so again, be careful to balance your education journey with practicality in trying to accomplish research goals.
ORBSYM
tells you information that can help to reduce the overall cost of things. So you have the Hamiltonian (i.e. integrals), and you want to calculate the matrix elements $H_{ij} = \langle \Phi_i | H | \Phi_j \rangle$ where $|\Phi\rangle$ are Slater determinants with any number of excitations? Have you tried to see what happens when the operator $H$ acts on a wavefunction $| \Phi_j \rangle$? $\endgroup$