subroutine shlrpagrd(dsh,d,basis)
use precision, only: dp
use types, only: information
use basis_tools, only: basis_set
implicit none
type(basis_set), intent(in) :: basis
real(kind=dp), intent(out) :: dsh(:,:)
real(kind=dp), intent(in), dimension(:,:,:,:) :: d
integer :: ish, jsh, maxi, maxj, mini, minj
real(kind=dp) :: mxv
! RHF
do ish = 1, basis%nshell
mini = basis%ao_offset(ish)
maxi = mini + basis%naos(ish)-1
do jsh = 1, ish
minj = basis%ao_offset(jsh)
maxj = minj + basis%naos(jsh) - 1
mxv = maxval(abs(d(minj:maxj,mini:maxi,:,:)))
dsh(ish,jsh) = max(dsh(ish,jsh), mxv)
dsh(jsh,ish) = dsh(ish,jsh)
end do
end do
end subroutine shlrpagrd