subroutine sfrogen(ava,avb,pv,noca,nocb)
use precision, only: dp
implicit none
real(kind=dp), intent(out), dimension(:,:) :: ava
real(kind=dp), intent(out), dimension(:,:) :: avb
real(kind=dp), intent(in), dimension(:) :: pv
integer, intent(in) :: noca, nocb
integer :: ij, i, j, k, nbf
nbf = ubound(ava, 1)
ava = 0.0_dp
avb = 0.0_dp
! doc-socc
ij = 0
do i = nocb+1, noca
do j = 1, nocb
ij = ij+1
avb(j,i) = pv(ij)
end do
end do
! doc-virt
do k = noca+1, nbf
do j = 1, nocb
ij = ij+1
ava(j,k) = pv(ij)
avb(j,k) = pv(ij)
end do
end do
! socc-virt
do k = noca+1, nbf
do i = nocb+1, noca
ij = ij+1
ava(i,k) = pv(ij)
end do
end do
end subroutine sfrogen