type rdm_definitions_t
! The total number of RDMs being calculated.
! Equal to nrdms_standard + nrdms_transition.
integer :: nrdms = 0
! The number of 'standard' RDMs (i.e. non-transition RDMs) being
! calculated.
integer :: nrdms_standard = 0
! The number of transition RDMs being calculated.
integer :: nrdms_transition = 0
! state_labels(:,j) will store the labels of the *actual* wave functions
! (i.e., usually which excited state it is) contributing to the j'th RDM.
integer, allocatable :: state_labels(:, :) ! (2, nrdms)
! sim_labels(:,j) will store the labels of the *FCIQMC* simulations
! (i.e. the 'replica' labels) which will be used to sample the j'th RDM
! being calculated.
integer, allocatable :: sim_labels(:, :) ! (2, nrdms)
! For transition RDMs, with 2 replicas for each state, there will be 2
! copies of each transition RDM. This array simply specifies which of
! the 2 each RDM is - the first or second 'repeat'.
integer, allocatable :: repeat_label(:) ! (nrdms)
! nrdms_per_sim(j) holds the number of different RDMS to which
! the FCIQMC simulation with label j contributes to.
integer, allocatable :: nrdms_per_sim(:) ! (lenof_sign)
! sim_pairs(:,j) holds the list of the FCIQMC simulations labels
! which are paired with simulation j in contributing to RDMs.
! Elements which are not needed (due to a simulation not
! contributing to all RDMs) are set to 0.
integer, allocatable :: sim_pairs(:, :) ! (nrdms, lenof_sign)
! rdm_labels(:,j) holds the list of RDM labels which simulation j
! contributes to. Elements which are not needed (due a simulation not
! contributing to all RDMs) are set to 0.
integer, allocatable :: rdm_labels(:, :) ! (nrdms, lenof_sign)
! prefix for the names of the files to output to
character(255) :: output_file_prefix
end type rdm_definitions_t