guga_rdm Module



Contents


Interfaces

public interface conjugate_rdm_ind

  • private pure function conjugate_rdm_ind_vec(rdm_ind, order) result(conj_rdm_ind)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int_rdm), intent(in) :: rdm_ind(:)
    integer, intent(in) :: order

    Return Value integer(kind=int_rdm), allocatable, (:)

  • private pure function conjugate_rdm_ind_scalar(rdm_ind, order) result(conj_rdm_ind)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int_rdm), intent(in) :: rdm_ind
    integer, intent(in) :: order

    Return Value integer(kind=int_rdm)


Functions

private pure function conjugate_rdm_ind_vec(rdm_ind, order) result(conj_rdm_ind)

Arguments

Type IntentOptional Attributes Name
integer(kind=int_rdm), intent(in) :: rdm_ind(:)
integer, intent(in) :: order

Return Value integer(kind=int_rdm), allocatable, (:)

private pure function conjugate_rdm_ind_scalar(rdm_ind, order) result(conj_rdm_ind)

Arguments

Type IntentOptional Attributes Name
integer(kind=int_rdm), intent(in) :: rdm_ind
integer, intent(in) :: order

Return Value integer(kind=int_rdm)

public pure function contract_molcas_1_rdm_index(i, j) result(ij)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: i
integer, intent(in) :: j

Return Value integer

public pure function contract_molcas_2_rdm_index(p, q, r, s) result(pqrs)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: p
integer, intent(in) :: q
integer, intent(in) :: r
integer, intent(in) :: s

Return Value integer

private elemental function molcas_sign(p, q, r, s) result(sgn)

Gives me the sign to fill the anti-symmetric molcas RDM with

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: p
integer, intent(in) :: q
integer, intent(in) :: r
integer, intent(in) :: s

Return Value real(kind=dp)

public elemental function pure_rdm_ind(rdm_ind) result(pure_ind)

Arguments

Type IntentOptional Attributes Name
integer(kind=int_rdm), intent(in) :: rdm_ind

Return Value integer(kind=int_rdm)

public function combine_x0_x1(rdm_ind, x0, x1) result(comb)

Arguments

Type IntentOptional Attributes Name
integer(kind=int_rdm), intent(in) :: rdm_ind
real(kind=dp), intent(in) :: x0
real(kind=dp), intent(in) :: x1

Return Value real(kind=dp)

public pure function generator_sign(i, j, k, l) result(sgn)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: k
integer, intent(in) :: l

Return Value real(kind=dp)


Subroutines

public pure subroutine extract_molcas_1_rdm_index(pq, p, q)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: pq
integer, intent(out) :: p
integer, intent(out) :: q

public pure subroutine extract_molcas_2_rdm_index(pqrs, p, q, r, s, pq_out, rs_out)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: pqrs
integer, intent(out) :: p
integer, intent(out) :: q
integer, intent(out) :: r
integer, intent(out) :: s
integer, intent(out), optional :: pq_out
integer, intent(out), optional :: rs_out

public subroutine output_molcas_rdms(rdm_defs, rdm, rdm_trace)

Print spin-free GUGA RDMs directly in Molcas format

Arguments

Type IntentOptional Attributes Name
type(rdm_definitions_t), intent(in) :: rdm_defs

Type contanining the number of RDMs sampled and which states contribute to each RDM.

type(rdm_list_t), intent(in) :: rdm

Stores RDMs as 1D lists whose elements can be accessed through a hash table.

real(kind=dp), intent(in) :: rdm_trace(rdm%sign_length)

Trace of RDMs required for normalisation of sampled arrays.

private subroutine fill_molcas_rdms(rdm, rdm_trace, irdm, psmat, pamat, dmat)

Populate the Molcas RDM arrays PSMAT/PAMAT/DMAT.

Arguments

Type IntentOptional Attributes Name
type(rdm_list_t), intent(in) :: rdm

Stores RDMs as 1D lists whose elements can be accessed through a has table.

real(kind=dp), intent(in) :: rdm_trace(rdm%sign_length)

Trace of RDMs required for normalisation of sampled arrays.

integer, intent(in) :: irdm

loop index over the different states to be sampled; 2 replicas are required per state.

real(kind=dp), intent(out), allocatable :: psmat(:)

Molcas RDM arrays to be populated.

real(kind=dp), intent(out), allocatable :: pamat(:)

Molcas RDM arrays to be populated.

real(kind=dp), intent(out), allocatable :: dmat(:)

Molcas RDM arrays to be populated.

public subroutine create_all_rdm_contribs(rdm_ind, x0, x1, rdm_ind_out, rdm_mat)

Arguments

Type IntentOptional Attributes Name
integer(kind=int_rdm), intent(in) :: rdm_ind
real(kind=dp) :: x0
real(kind=dp) :: x1
integer(kind=int_rdm), intent(out), allocatable :: rdm_ind_out(:)
real(kind=dp), intent(out), allocatable :: rdm_mat(:)

public subroutine Add_RDM_HFConnections_GUGA(spawn, one_rdms, ilutJ, av_sign_j, av_sign_hf, excit_lvl, iter_rdm)

Arguments

Type IntentOptional Attributes Name
type(rdm_spawn_t), intent(inout) :: spawn
type(one_rdm_t), intent(inout) :: one_rdms(:)
integer(kind=n_int), intent(in) :: ilutJ(0:IlutBits%len_tot)
real(kind=dp), intent(in) :: av_sign_j(:)
real(kind=dp), intent(in) :: av_sign_hf(:)
integer, intent(in) :: excit_lvl
integer, intent(in) :: iter_rdm(:)

public subroutine add_rdm_from_ij_pair_guga_exact(spawn, one_rdms, ilutI, csf_i, ilutJ, csf_j, sign_i, sign_j)

Arguments

Type IntentOptional Attributes Name
type(rdm_spawn_t), intent(inout) :: spawn
type(one_rdm_t), intent(inout) :: one_rdms(:)
integer(kind=n_int), intent(in) :: ilutI(0:IlutBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer(kind=n_int), intent(in) :: ilutJ(0:IlutBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_j
real(kind=dp), intent(in) :: sign_i(:)
real(kind=dp), intent(in) :: sign_j(:)

public subroutine Add_RDM_From_IJ_Pair_GUGA(spawn, one_rdms, nI, nJ, sign_i, sign_j, t_bra_to_ket, t_fast, rdm_ind_in, x0, x1)

Arguments

Type IntentOptional Attributes Name
type(rdm_spawn_t), intent(inout) :: spawn
type(one_rdm_t), intent(inout) :: one_rdms(:)
integer, intent(in) :: nI(nel)
integer, intent(in) :: nJ(nel)
real(kind=dp), intent(in) :: sign_i(:)
real(kind=dp), intent(in) :: sign_j(:)
logical, intent(in) :: t_bra_to_ket
logical, intent(in), optional :: t_fast
integer(kind=int_rdm), intent(in), optional :: rdm_ind_in
real(kind=dp), intent(in), optional :: x0
real(kind=dp), intent(in), optional :: x1

public subroutine gen_exc_djs_guga(ilutI, csf_i)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilutI(0:niftot)
type(CSF_Info_t), intent(in) :: csf_i

public subroutine fill_spawn_rdm_diag_guga(spawn, nI, full_sign)

Arguments

Type IntentOptional Attributes Name
type(rdm_spawn_t), intent(inout) :: spawn
integer, intent(in) :: nI(nel)
real(kind=dp), intent(in) :: full_sign(spawn%rdm_send%sign_length)

public subroutine fill_diag_1rdm_guga(one_rdms, nI, contrib_sign, tCoreSpaceDetIn, RDMItersIn)

Arguments

Type IntentOptional Attributes Name
type(one_rdm_t), intent(inout) :: one_rdms(:)
integer, intent(in) :: nI(nel)
real(kind=dp), intent(in) :: contrib_sign(:)
logical, intent(in), optional :: tCoreSpaceDetIn
integer, intent(in), optional :: RDMItersIn(:)

public subroutine send_proc_ex_djs()

Arguments

None

private subroutine doubles_search_guga(recvcounts, recvdisps)

Arguments

Type IntentOptional Attributes Name
integer(kind=MPIArg), intent(in) :: recvcounts(nProcessors)
integer(kind=MPIArg), intent(in) :: recvdisps(nProcessors)

private subroutine singles_search_guga(recvcounts, recvdisps)

Arguments

Type IntentOptional Attributes Name
integer(kind=MPIArg), intent(in) :: recvcounts(nProcessors)
integer(kind=MPIArg), intent(in) :: recvdisps(nProcessors)

public subroutine fill_sings_1rdm_guga(one_rdms, sign_i, sign_j, mat_ele, rdm_ind)

Arguments

Type IntentOptional Attributes Name
type(one_rdm_t), intent(inout) :: one_rdms(:)
real(kind=dp), intent(in) :: sign_i(:)
real(kind=dp), intent(in) :: sign_j(:)
real(kind=dp), intent(in) :: mat_ele
integer(kind=int_rdm), intent(in) :: rdm_ind

public subroutine fill_sings_2rdm_guga(spawn, ilutI, ilutJ, sign_i, sign_j, mat_ele, rdm_ind)

Arguments

Type IntentOptional Attributes Name
type(rdm_spawn_t), intent(inout) :: spawn
integer(kind=n_int), intent(in) :: ilutI(0:GugaBits%len_tot)
integer(kind=n_int), intent(in) :: ilutJ(0:GugaBits%len_tot)
real(kind=dp), intent(in) :: sign_i(:)
real(kind=dp), intent(in) :: sign_j(:)
real(kind=dp), intent(in) :: mat_ele
integer(kind=int_rdm), intent(in) :: rdm_ind

private subroutine assign_excits_to_proc_guga(n_tot, excits, excit_lvl)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_tot
integer(kind=n_int), intent(in), allocatable :: excits(:,:)
integer, intent(in) :: excit_lvl

public subroutine calc_explicit_2_rdm_guga(ilut, csf_i, n_tot, excitations)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(out) :: n_tot
integer(kind=n_int), intent(out), allocatable :: excitations(:,:)

public subroutine calc_explicit_1_rdm_guga(ilut, csf_i, n_tot, excitations)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(out) :: n_tot
integer(kind=n_int), intent(out), allocatable :: excitations(:,:)

public subroutine calc_all_excits_guga_rdm_doubles(ilut, csf_i, i, j, k, l, excits, n_excits)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: k
integer, intent(in) :: l
integer(kind=n_int), intent(out), allocatable :: excits(:,:)
integer, intent(out) :: n_excits

public subroutine calc_all_excits_guga_rdm_singles(ilut, csf_i, i, j, excits, n_excits)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: i
integer, intent(in) :: j
integer(kind=n_int), intent(out), allocatable :: excits(:,:)
integer, intent(out) :: n_excits

private subroutine add_guga_lists_rdm(n_dets_tot, n_dets, list_tot, list)

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: n_dets_tot
integer, intent(in) :: n_dets
integer(kind=n_int), intent(inout) :: list_tot(0:,1:)
integer(kind=n_int), intent(inout) :: list(0:,1:)

public subroutine calc_rdm_energy_guga(rdm, rdm_energy_1, rdm_energy_2)

Arguments

Type IntentOptional Attributes Name
type(rdm_list_t), intent(in) :: rdm
real(kind=dp), intent(out) :: rdm_energy_1(rdm%sign_length)
real(kind=dp), intent(out) :: rdm_energy_2(rdm%sign_length)