subroutine ReTruncROFciDump()
use NatOrbsMod, only: FillCoeffT1
integer :: i, j, ierr
character(len=*), parameter :: this_routine = 'ReTruncROFciDump'
do i = 2, NoDumpTruncs
deallocate(ArrDiagNew)
call LogMemDeAlloc(this_routine, ArrDiagNewTag)
deallocate(CoeffT1)
call LogMemDeAlloc(this_routine, CoeffT1Tag)
deallocate(FourIndInts)
call LogMemDeAlloc(this_routine, FourIndIntsTag)
deallocate(SymOrbs_rot)
call LogMemDeAlloc(this_routine, SymOrbs_rotTag)
deallocate(TMAT2DNew)
call LogMemDeAlloc(this_routine, TMAT2DNewTag)
deallocate(EvaluesTrunc)
call LogMemDeAlloc(this_routine, EvaluesTruncTag)
if (tTruncDumpbyVal) then
NoFrozenVirt = 0
TruncEval = TruncEvalues(i)
else
if (tStoreSpinOrbs) then
NoFrozenVirt = NoTruncOrbs(i)
else
NoFrozenVirt = NoTruncOrbs(i) / 2
end if
end if
NoRotOrbs = NoOrbs - NoFrozenVirt
if (MOD(NoFrozenVirt, 2) /= 0) call Stop_All(this_routine, "Must freeze virtual spin orbitals in pairs of 2.")
allocate(CoeffT1(NoOrbs, NoRotOrbs), stat=ierr)
call LogMemAlloc(this_routine, NoRotOrbs * NoOrbs, 8, this_routine, CoeffT1Tag, ierr)
CoeffT1(:, :) = 0.0_dp
if (tSeparateOccVirt) then
do j = 1, NoRotOrbs
CoeffT1(i, i) = 1.0_dp
end do
end if
call FillCoeffT1()
allocate(FourIndInts(NoOrbs, NoOrbs, NoOrbs, NoOrbs), stat=ierr)
call LogMemAlloc('FourIndInts', (NoOrbs**4), 8, this_routine, FourIndIntsTag, ierr)
! Then, transform2ElInts.
write(stdout, *) 'Transforming the four index integrals.'
call Transform2ElIntsMemSave()
write(stdout, *) 'Re-calculating the fock matrix.'
call CalcFOCKMatrix()
write(stdout, *) 'Refilling the UMAT and TMAT2D.'
! The ROFCIDUMP is also printed out in here.
call RefillUMATandTMAT2D()
call neci_flush(stdout)
end do
end subroutine ReTruncROFciDump