DeallocateMem Subroutine

public subroutine DeallocateMem()

Arguments

None

Contents

Source Code


Source Code

    subroutine DeallocateMem()

        character(len=*), parameter :: this_routine = 'DeallocateMem'

        deallocate(Lab)
        call LogMemDealloc(this_routine, LabTag)
        deallocate(CoeffT1)
        call LogMemDealloc(this_routine, CoeffT1Tag)
        deallocate(CoeffCorT2)
        call LogMemDealloc(this_routine, CoeffCorT2Tag)
        deallocate(CoeffUncorT2)
        call LogMemDealloc(this_routine, CoeffUncorT2Tag)
        if (tLagrange) then
            deallocate(Lambdas)
            call LogMemDealloc(this_routine, LambdasTag)
            deallocate(DerivLambda)
            call LogMemDealloc(this_routine, DerivLambdaTag)
        end if
        deallocate(DerivCoeff)
        call LogMemDealloc(this_routine, DerivCoeffTag)

        deallocate(DiagTMAT2Dfull)
        call LogMemDealloc(this_routine, DiagTMAT2DfullTag)

        deallocate(TwoIndInts01)
        call LogMemDealloc(this_routine, TwoIndInts01Tag)
        deallocate(ThreeIndInts02)
        call LogMemDealloc(this_routine, ThreeIndInts02Tag)
        deallocate(FourIndInts)
        call LogMemDealloc(this_routine, FourIndIntsTag)
        deallocate(FourIndInts02)
        call LogMemDealloc(this_routine, FourIndInts02Tag)

        if (tERLocalization .and. (.not. tStoreSpinOrbs)) then
            deallocate(TwoIndIntsER)
            call LogMemDeAlloc(this_routine, TwoIndIntsERTag)
            deallocate(ThreeIndInts01ER)
            call LogMemDeAlloc(this_routine, ThreeIndInts01ERTag)
            deallocate(ThreeIndInts02ER)
            call LogMemDeAlloc(this_routine, ThreeIndInts02ERTag)
            deallocate(FourIndIntsER)
            call LogMemDeAlloc(this_routine, FourIndIntsERTag)
        else
            deallocate(TMAT2DTemp)
            call LogMemDealloc(this_routine, TMAT2DTempTag)
            deallocate(TMAT2DPartRot01)
            call LogMemDealloc(this_routine, TMAT2DPartRot01Tag)
            deallocate(TMAT2DPartRot02)
            call LogMemDealloc(this_routine, TMAT2DPartRot02Tag)
            deallocate(TMAT2DRot)
            call LogMemDealloc(this_routine, TMAT2DRotTag)

            deallocate(TwoIndInts02)
            call LogMemDealloc(this_routine, TwoIndInts02Tag)
            deallocate(ThreeIndInts01)
            call LogMemDealloc(this_routine, ThreeIndInts01Tag)
            deallocate(ThreeIndInts03)
            call LogMemDealloc(this_routine, ThreeIndInts03Tag)
            deallocate(ThreeIndInts04)
            call LogMemDealloc(this_routine, ThreeIndInts04Tag)
            deallocate(UMATTemp02)
            call LogMemDealloc(this_routine, UMATTemp02Tag)
        end if

        deallocate(UMATTemp01)
        call LogMemDealloc(this_routine, UMATTemp01Tag)
        deallocate(SymLabelList2_rot)
        call LogMemDealloc(this_routine, SymLabelList2_rotTag)
        deallocate(SymLabelCounts2_rot)
        call LogMemDealloc(this_routine, SymLabelCounts2_rotTag)
        deallocate(SymLabelListInv_rot)
        call LogMemDealloc(this_routine, SymLabelListInv_rotTag)

        if (tShake) then
            deallocate(ShakeLambda)
            call LogMemDealloc(this_routine, ShakeLambdaTag)
            deallocate(ShakeLambdaNew)
            call LogMemDealloc(this_routine, ShakeLambdaNewTag)
            deallocate(Constraint)
            call LogMemDealloc(this_routine, ConstraintTag)
            deallocate(ConstraintCor)
            call LogMemDealloc(this_routine, ConstraintCorTag)
            deallocate(DerivConstrT1)
            call LogMemDealloc(this_routine, DerivConstrT1Tag)
            deallocate(DerivConstrT2)
            call LogMemDealloc(this_routine, DerivConstrT2Tag)
            deallocate(ForceCorrect)
            call LogMemDealloc(this_routine, ForceCorrectTag)
            deallocate(Correction)
            call LogMemDealloc(this_routine, CorrectionTag)
            if (tShakeApprox) then
                deallocate(DerivConstrT1T2Diag)
                call LogMemDealloc(this_routine, DerivConstrT1T2DiagTag)
            else
                deallocate(DerivConstrT1T2)
                call LogMemDealloc(this_routine, DerivConstrT1T2Tag)
            end if
        end if

    end subroutine DeallocateMem