28.3 More advanced options

The following section provides more detail on some of the more advanced options described in Table 12.

`SPIN=`*`EVEN'/`ODD'*- Rather than perform the FCIQMC dynamic in a space of Slater determinants, this option combines each determinant with its spin-flipped partner to create a new space, which exactly spans either the space of even or odd spin eigenfunctions of the system. This effectively halves the number of functions on which the walkers can reside, reducing the overall number of walkers required for a given accuracy, as well as potentially allowing for a larger timestep, and the ability to converge to the lowest energy state of odd and even spin quantum number separately. These functions can be considered a compromise between a determinant and configuration state function space which are true spin eigenfunctions, and thus should reduce the instantaneous spin-contamination of the wavefunction, with only small additional computation overhead. This option is only available for states.
`CALCMCSIZESPACE=`*value*- This option will provide an estimate for the dimensionality of the space
in which the FCIQMC dynamic will evolve, prior to the start of the FCIQMC calculation. This is done via a stochastic
sampling of the space, and will write out the evolution of this estimate to a file called `
`SpaceMCStats`'. The value that this option takes gives the number of iterations (per MPI task) to sample the space for. A final estimate is written to the standard output. All spin and symmetry constraints are considered. `STARTMP1=`*value*- This option distributes
*value*number of walkers initially at a distribution proportional to that of the MP1 wavefunction. The initial projected energy should therefore agree well with the MP2 energy. This can allow for faster equilibration of the population. If the*value*given here is the same as the`TARGETWALKERS`, then the simulation will begin in variable shift mode, with the initial shift set to the MP2 energy. Note that this will only work correctly if the orbitals come from a prior RHF calculation. `MAXATREF=`*value*- If present, this option provides an additional condition by which the variable shift mode
of the calculation can begin. Either if the number of walkers exceeds that specified by
`TARGETWALKERS`, or the number of walkers specifically residing on the reference configuration exceeds the*value*specified in this option, then the shift will be allowed to vary to stabilize walker growth. `PROJE-CHANGEREF=`*value*- If present, then this option allows the choice of reference configuration for the calculation
of the projected energy to dynamically change during the course of the simulation. As will be seen in section 28.6, the
variance of the projected energy estimate is dependent on the choice of reference configuration, but the specifics of the
walker dynamic are independent. Therefore, maximizing the population on the reference configuration can be beneficial,
especially in strongly-correlated cases where the initial reference (often Hartree-Fock) may have a relatively small weight
in the final wavefunction, or where canonical Hartree-Fock orbitals are not used, and so no obvious choice of reference
configuration presents itself.
The
*value*that this option takes is the percentage by which a configuration population is required to exceed the population of the current reference determinant, before the reference is changed to this highest populated configuration, i.e.`PROJE-CHANGEREF`=15 indicates that if a population on any configuration exceeds 115% of the current reference, it will become the new reference. `MEMORYFACWALKERS=`*value*- This is a memory parameter, which determines the available storage for the main walker array.
Its value should not affect the calculation if large enough. The
*value*given is the fraction of the number of walkers specified by the`TARGETWALKERS`parameter which can be held in memory (assuming perfect load balancing across MPI tasks). Therefore, the default value of 1.5 should theoretically allow for growth of walkers up to 50% larger than that specified by by`TARGETWALKERS`. This should be more than sufficient for most applications, however if memory errors or unexpected termination of the program are encountered, these memory parameters may need to be increased. `MEMORYFACSPAWNED=`*value*- This memory parameter is of a similar type to
`MEMORYFACWALKERS`, but governs the memory allocated for the spawned walker arrays at each iteration. Once again, it is given as a fraction of the walker number specified by`TARGETWALKERS`, and so the default value of 0.3 should theoretically allow for up to 30% of the`TARGETWALKERS`number of walkers to be created each iteration (again assuming perfect load balancing).

As well as specifying orbital subspaces, it is also possible to perform various truncated determinant space
calculations within the FCIQMC dynamic, which although not strictly
size-consistent, can nevertheless be used to obtain well equilibrated initial walker populations (which can then be read
back in), or often accurate approximations to FCI energies in their own right. A common choice of truncated CI space is based
on an excitation level criteria, which can be specified with the `TRUNCATE` keyword.

`TRUNCATE=`*value*- If present, this truncates the CI space based on the excitation rank of the function from the
specified reference determinant. This results in FCIQMC energies which converge on the CIS, CISD, CISDT,
CISDTQ, CI(
*value*) hierarchy of approximations.

Another truncated space is one is not in the CI literature to the best of our knowledge, and is based upon either specifying a low-energy occupied orbital space, in which configurations sampled must not contain larger than a given number of holes, and/or a high-energy virtual subspace in which the determinant space must not contain more than a specified number of electrons. Because this reduces to the frozen-core approximation in the case of zero allowed holes in an occupied subspace, or amounts to deleting high-energy virtuals in the limit of no electrons allowed in the virtual subspace, this is denoted `partial freezing'. This can also be considered as limiting the excitation level for an electron subset.

`PARTIALFREEZEOCC=`*value*- Indicates the number of lowest energy electrons to partially freeze (can be
considered a core or semi-core space). Requires the
`PARTIALFREEZEHOLES`option to also be specified. `PARTIALFREEZEHOLES=`*value*- Indicates the number of holes allowed in this partially frozen space. Requires
the
`PARTIALFREEZEOCC`option to also be specified. `PARTIALFREEZEVIRT=`*value*- Indicates the number of highest energy virtual spin-orbitals to partially freeze,
restricting the number of electrons which can simultaneously occupy them. Requires the
`PARTIALFREEZEVIRTELECS`option to also be specified. `PARTIALFREEZEVIRTELECS=`*value*- Indicates the number of electrons allowed to simultaneously occupy the highest
energy virtual space, as specified in the required
`PARTIALFREEZEVIRT`option.

molpro@molpro.net 2019-05-24