mntoia Subroutine

public subroutine mntoia(pao, pmo, va, vb, nocca, noccb)

Uses

  • proc~~mntoia~~UsesGraph proc~mntoia mntoia module~precision precision proc~mntoia->module~precision iso_fortran_env iso_fortran_env module~precision->iso_fortran_env

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), dimension(:,:) :: pao
real(kind=dp), intent(out), dimension(*) :: pmo
real(kind=dp), intent(in), target, dimension(:,:) :: va
real(kind=dp), intent(in), target, dimension(:,:) :: vb
integer, intent(in) :: nocca
integer, intent(in) :: noccb

Calls

proc~~mntoia~~CallsGraph proc~mntoia mntoia proc~oqp_dgemm_i64 oqp_dgemm_i64 proc~mntoia->proc~oqp_dgemm_i64 dgemm dgemm proc~oqp_dgemm_i64->dgemm interface~show_message show_message proc~oqp_dgemm_i64->interface~show_message

Called by

proc~~mntoia~~CalledByGraph proc~mntoia mntoia proc~tdhf_energy tdhf_energy proc~tdhf_energy->proc~mntoia proc~tdhf_mrsf_energy tdhf_mrsf_energy proc~tdhf_mrsf_energy->proc~mntoia proc~tdhf_sf_energy tdhf_sf_energy proc~tdhf_sf_energy->proc~mntoia proc~tdhf_energy_c tdhf_energy_C proc~tdhf_energy_c->proc~tdhf_energy proc~tdhf_mrsf_energy_c tdhf_mrsf_energy_C proc~tdhf_mrsf_energy_c->proc~tdhf_mrsf_energy proc~tdhf_sf_energy_c tdhf_sf_energy_C proc~tdhf_sf_energy_c->proc~tdhf_sf_energy

Source Code

  subroutine mntoia(pao,pmo,va,vb,nocca,noccb)
    use precision, only: dp

    implicit none

    real(kind=dp), intent(in), dimension(:,:) :: pao
    real(kind=dp), intent(out), dimension(*) :: pmo
    real(kind=dp), intent(in), target, dimension(:,:) :: va, vb
    integer, intent(in) :: nocca, noccb

    integer :: nbf
    real(kind=dp), allocatable :: scr(:,:)
    real(kind=dp), pointer :: vap(:,:), vbp(:,:)

    nbf = ubound(pao, 1)

    allocate(scr(nocca,nbf))

    vap => va(:,1:nocca)
    vbp => vb(:,noccb+1:)

    call dgemm('t','n',nocca,nbf,nbf, &
               1.0_dp,vap,nbf,pao,nbf, &
               0.0_dp,scr,nocca)

    call dgemm('n','n',nocca,nbf-noccb,nbf, &
               1.0_dp,scr,nocca,vbp,nbf, &
               0.0_dp,pmo,nocca)

    deallocate(scr)
  end subroutine mntoia