Full Configuration Interaction

Calculate the ground state of a system via a full diagonalisation of the Hamiltonian matrix [Knowles89].

fci {
    sys = system,
    fci = { ... },
    reference = { ... },
}

Note

The FCI engine in HANDE is particularly simple (i.e. slow, dumb, memory hungry) and is designed mainly for testing. A conventional quantum chemistry package, such as MOLPRO, or PSI4, is highly recommended for production FCI calculations as these implement substantially more efficient algorithms.

Options

sys

type: system object.

Required.

The system on which to perform the calculation. Must be created via a system function.

fci

type: lua table.

Optional. No default.

Further FCI options. See below.

reference

type: lua table.

Optional. No default.

If not specified, the entire Hilbert space is used. See reference options.

fci options

The fci table can take the following options:

write_hamiltonian

type: boolean.

Optional. Default: false.

Write out the diagonal and the non-zero off-diagonal elements of the Hamiltonian matrix.

hamiltonian_file

type: string.

Optional. Default: ‘HAMIL’.

Filename to which the Hamiltonian matrix is written.

write_determinants

type: boolean.

Optional. Default: false.

Write out the enumerated list of determinants in the FCI Hilbert space.

determinant_file

type: string.

Optional. Default: ‘DETS’.

Filename to which the list of determinants (or, more generally, many-body basis functions) is written.

write_nwfns

type: integer.

Optional. Default: 0.

Number of wavefunctions to write out (in the basis of Slater determinants). A negative value indicates all wavefunctions are to be written out.

wfn_file

type: string.

Optional. Default: ‘FCI_WFN’.

Filename to which the wavefunctions are written.

nanalyse

type: integer.

Optional. Default: 0.

Calculate properties of the first nwfn FCI wavefunctions from each spin and symmetry block. If nwfn is negative (default) then all wavefunctions are analysed. This is slow, and uses a very simple algorithm. It is only designed for debugging purposes. The properties evaluated depend upon the system and are liable to change without warning.

blacs_block_size

type: integer.

Optional. Default: 64.

The block size used by BLACS to distribute the Hamiltonian matrix across the processors with MPI parallelism. The Hamiltonian matrix is divided into \(n \times n\) sub-matrices, where \(n\) is the block size, which are the distributed over the processors in a cyclic fashion.

rdm

type: table of integers.

Optional. No default.

If present, calculate the eigenvalues for the reduced density matrix consisting of the specified list of sites, with a trace performed over all other sites.

Note

The rdm option is only currently available for Heisenberg systems.

Note

The write_wfn, nanalyse and rdm options require the eigenvectors to be calculated in addition to the eigenvalues, which requires additional computational time.