subroutine DumpUMatCache()
! Print out the cache contents so they can be read back in for a future
! calculation. Need to print out the full set of indices, as the number of
! states may change with the next calculation.
! Variables
integer iPair, iSlot, i, j, k, l, iCache1, iCache2, A, B, iType
HElement_t(dp) UMatEl
type(Symmetry) Sym
integer iunit
iunit = get_free_unit()
open(iunit, file="CacheDump", status="unknown")
! do i=1,nPairs !Run through ik pairs
! do j=1,nSlots !Run through all pairs (unordered in the list)
! write(iunit,*) i,j,UMatLabels(j,i),UMatCacheData(:,j,i) !ik label, slot value, jl label, integral
! end do
! end do
! write(iunit,*) "*****"
write(iunit, *) nStates
do iPair = 1, nPairs
do iSlot = iPair, nSlots
call GetCacheIndexStates(iPair, i, k)
call GetCacheIndexStates(iSlot, j, l)
Sym = TotSymRep()
! All integrals stored in the cache are non-zero by symmetry.
if (LSymSym(Sym)) then
if (.not. GetCachedUMatEl(i, j, k, l, UMatEl, iCache1, iCache2, A, B, iType)) then
if (TTRANSFINDX) then
i = InvTransTable(i)
j = InvTransTable(j)
k = InvTransTable(k)
l = InvTransTable(l)
end if
! Print out UmatCacheData as UMatEl holds just a single
! integral.
write(iunit, *) i, j, k, l, UMatCacheData(:, ICACHE2, ICACHE1)!,A,B
end if
end if
end do
end do
close(iunit, status="keep")
return
end subroutine DumpUMatCache