Coupled Cluster Monte Carlo

ccmc {
    sys = system,
    qmc = { ... },
    ccmc = { ... },
    restart = { ... },
    reference = { ... },
    qmc_state = qmc_state,
}
Returns:
a qmc_state object.

ccmc performs a coupled cluster Monte Carlo (CCMC) calculation [Thom10] on a system.

Options

sys

type: system object.

Required.

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

qmc

type: lua table.

Required.

Further options that are common to all implemented QMC algorithms. See qmc options.

ccmc

type: lua table.

Required.

Further options to control the CCMC algorithm. See ccmc options.

restart

type: lua table.

Optional.

Further options to control restarting the calculation from a previous calculation. See restart options.

reference

type: lua table.

Optional.

Further options to select the reference state used. See reference options.

qmc_state

type: qmc_state object.

Optional.

Output of a previous calculation to resume.

Warning

The qmc_state object must have been returned by a previous CCMC calculation. The validity of this is not checked. The system must also be unchanged.

ccmc options

move_frequency

type: integer

Optional. Default: 5.

Allow excitors to move processors every \(2^x\) iterations, where \(x\) is the value of move_frequency, in order to allow all composite excitors to be correctly sampled. Relevant only when performing CCMC with MPI parallelisation. A large value may introduce a bias. Modify with caution.

cluster_multispawn_threshold

type: float.

Optional. Default: \(2^{31}-1\).

Set the maximum value of \(A_C/p_C\), where \(A_C\) is the cluster amplitude and \(p_C\) is the probability of selecting the cluster. A cluster with a value above this is split into multiple spawning attempts. The default value essentially disables this but a smaller option can substantially reduce population blooms, albeit potentially at a significant computational cost.

Note

This is an experimental option and feedback is most welcome. The current recommendation is to use the smallest setting such that large blooms do not occur.

full_non_composite

type: boolean.

Optional. Default: false.

If true, allow all non-composite clusters to attempt to spawn each iteration. The original CCMC algorithm involves randomly selecting a cluster of arbitrary size consisting of any set of excitors and then making spawning attempts from it. The full non-composite algorithm is a simple modification in which all occupied non-composite clusters (i.e. those consisting of the reference or just a single excitor) are (deterministically) selected and composite clusters (involving two or more excitors) are randomly selected to make spawning attempts. This has been shown to give substantially more stable dynamics and reduce the plateau height in several systems.

linked

type: boolean.

Optional. Default: false.

If true, sample the linked coupled cluster equations instead of the unlinked coupled cluster equations [Franklin16]. The original CCMC algorithm solves the equations

\[\langle D_m | \hat{H} - E | \psi_{CC} \rangle = 0.\]

It is possible to instead sample the equivalent equations

\[\langle D_m | e^{-\hat{T}} (\hat{H} - E) | \psi_{CC} \rangle = 0.\]

Using the Hausdorff expansion of the Hamiltonian and the linked cluster theorem means that the only clusters which contribute are those with at most four excitors and where the excitation sampled from the Hamiltonian has an orbital in common with each excitor in the cluster operator. Using this option can give substantial reductions in the plateau height.

vary_shift_reference

type: boolean.

Optional. Default: false.

Vary the shift to keep the population at the reference, \(N_0\), constant, rather than the total population \(N_p\). If target_population is below the plateau (or an equivalently low reference_target is specified) then, whilst the reference population will be controlled, the total population will continue to grow until a stable distribution is reached.