build_nbody_compute_list

qcmanybody.builder.build_nbody_compute_list(bsse_type, nfragments, nbodies, return_total_data, supersystem_ie_only, supersystem_max_nbody=None)[source]

Generates lists of N-Body computations needed for requested BSSE treatments.

Parameters:
  • bsse_type (Iterable[BsseEnum]) – Requested BSSE treatments.

  • nfragments (int) – Number of distinct fragments comprising the full molecular supersystem.

  • nbodies (Iterable[Union[int, Literal['supersystem']]]) – List of n-body levels (e.g., [2] or [1, 2] or [“supersystem”]) for which to generate tasks. Note the natural 1-indexing, so [1] covers one-body contributions.

  • return_total_data (bool) – Whether the total data (True; energy/gradient/Hessian) of the molecular system has been requested, as opposed to interaction data (False).

  • supersystem_ie_only (bool) – Target the supersystem total/interaction energy (IE) data over the many-body expansion (MBE) ” analysis, thereby omitting intermediate-body calculations.

  • supersystem_max_nbody (Optional[int]) – Maximum n-body to use for a supersystem calculation. Must be specified if “supersystem” is in nbodies

Returns:

Dictionary containing subdicts enumerating compute lists for each possible BSSE treatment. Subdict keys are n-body levels and values are sets of all the mc_(frag, bas) indices needed to compute that n-body level. A given index can appear multiple times within a subdict and among subdicts.

compute_dict["cp"] = {
    1: set(),
    2: {((1,), (1, 2)),
        ((2,), (1, 2)),
        ((1, 2), (1, 2))}
}

Subdicts below are always returned. Any may be empty if not requested through bsse_type.

  • 'all' — full list of computations required

  • 'cp' — list of computations required for CP procedure

  • 'nocp' — list of computations required for non-CP procedure

  • 'vmfc_compute' — list of computations required for VMFC procedure

  • 'vmfc_levels' — list of levels required for VMFC procedure

Return type:

compute_dict