subroutine ReadInUMatCache()
! Read in cache file from CacheDump.
integer i, j, k, l, iCache1, iCache2, A, B, readerr, iType, iunit
HElement_t(dp) UMatEl(0:nTypes - 1), DummyUMatEl(0:nTypes - 1)
logical tDummy, testfile
inquire(file="CacheDump", exist=testfile)
if (.not. testfile) then
write(stdout, *) 'CacheDump does not exist.'
return
end if
iunit = get_free_unit()
open(iunit, file="CacheDump", status="old", iostat=readerr)
if (readerr /= 0) then
write(stdout, *) 'Error reading CacheDump.'
return
end if
read(iunit, *) nStatesDump
readerr = 0
do while (readerr == 0)
read(iunit, *, iostat=readerr) i, j, k, l, UMatEl
DummyUMatEl = UMatEl
if (TTRANSFINDX) then
i = TransTable(i)
j = TransTable(j)
k = TransTable(k)
l = TransTable(l)
end if
if (min(i, j, k, l) > 0 .and. max(i, j, k, l) <= nStates) then
! Need to get cache indices before we cache the integral:
! a dummy call to GetCachedUMatEl returns the needed indices and
! integral type information.
tDummy = GetCachedUMatEl(i, j, k, l, DummyUmatEl(0), iCache1, iCache2, A, B, iType)
call CacheUMatEl(B, UMatEl, iCache1, iCache2, iType)
end if
end do
close(iunit)
return
end subroutine ReadInUMatCache