Add_RDM_HFConnections_GUGA Subroutine

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(:)

Contents


Source Code

    subroutine Add_RDM_HFConnections_GUGA(spawn, one_rdms, ilutJ, av_sign_j, &
                                          av_sign_hf, excit_lvl, iter_rdm)
        type(rdm_spawn_t), intent(inout) :: spawn
        type(one_rdm_t), intent(inout) :: one_rdms(:)
        integer(n_int), intent(in) :: ilutJ(0:IlutBits%len_tot)
        integer, intent(in) :: excit_lvl, iter_rdm(:)
        real(dp), intent(in) :: av_sign_j(:), av_sign_hf(:)
        type(CSF_Info_t) :: csf_j, csf_HF_true

        unused_var(excit_lvl)
        ! damn.. here we need to do the 'slow' implementation i guess..
        ! since NJ does not come from a spawning event but is
        ! done deterministically for the HF connections..
        ! there should be a clever way to do this..
        ! nah.. not for now.. otherwise i have to check everywhere also
        ! if i sampled this already.. for leave it at that and be done with

        csf_HF_true = CSF_Info_t(iLutHF_True)
        csf_j = CSF_Info_t(ilutJ)

        call add_rdm_from_ij_pair_guga_exact(spawn, one_rdms, iLutHF_True, csf_HF_true, &
                                                 ilutJ, csf_j, av_sign_hf(2::2), iter_rdm*av_sign_j(1::2))

        call add_rdm_from_ij_pair_guga_exact(spawn, one_rdms, ilutJ, csf_j, &
                                             iLutHF_True, csf_HF_true, av_sign_j(2::2), iter_rdm*av_sign_hf(1::2))
    end subroutine Add_RDM_HFConnections_GUGA