SwapOneEPropInts Subroutine

public subroutine SwapOneEPropInts(nBasisFrz, iNum)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nBasisFrz
integer, intent(in) :: iNum

Contents

Source Code


Source Code

    SUBROUTINE SwapOneEPropInts(nBasisFrz, iNum)

        ! IN: iNum is the number of perturbation operator used in the calculation
        ! During freezing, we need to know the OneEPropInts arrays both pre- and
        ! post-freezing.  Once freezing is done, clear all the pre-freezing
        ! arrays and point them to the post-freezing arrays, so the code
        ! referencing pre-freezing arrays can be used post-freezing.
        implicit none
        integer, intent(in) :: nBasisFrz, iNum
        integer :: iSize, ierr
        character(*), parameter :: t_r = 'SwapOneEPropInts'

        Deallocate(OneEPropInts)
        call LogMemDealloc(t_r, tagOneEPropInts)
        NULLIFY (OneEPropInts)

        allocate(OneEPropInts(nBasisFrz, nBasisFrz, iNum), STAT=ierr)
        iSize = nBasisFrz * nBasisFrz * iNum
        call LogMemAlloc('OneEPropInts', iSize, HElement_t_size * 8, t_r, tagOneEPropInts)

        OneEPropInts => OneEPropInts2

        NULLIFY (OneEPropInts2)

    END SUBROUTINE SwapOneEPropInts