SUBROUTINE execute
!
USE Numeric_Kinds_Module
USE CommonInfo_Module
USE SymGroup_Module
USE APH_Module
USE SurfaceAPH_Module
USE Time_Module
USE OVerlap_Module
!
Implicit None
Save
!=========================================================================================
! Written by: Jeff Crawford

! Propagate

!=========================================================================================
!   I N T E R N A L S

 CHARACTER(LEN=3) repname
 Integer :: istat, tterm, ndim_ir, whichir, nchir, chishift, ndim_sector

!=========================================================================================
!   A L L O C A T A B L E
 Complex(dp), Allocatable :: phi_ir(:)

!=========================================================================================
!  Begin time step loop: (Doesn't run a step for t=0)
!-----------------------------------------------------------------------------------------

 Do whichir=1,nirrep 

   IF (to_propagate(whichir)) THEN     

      Call repnames(whichir,group,repname)
      IF (whichir.le.4) THEN
        WRITE(*,21) repname, group
      ELSE
        WRITE(*,22) repname, group
      ENDIF

      !Call findtime(.true.,'ir')
      nchir=nchi_ir(whichir)      ! Possibly pass these to routines rather than 
      ndim_ir=nrho*ntheta*nchir   ! calculating them everywhere
      chishift=chishift_ir(whichir)
      ndim_sector=ntheta*nchir

      ALLOCATE(phi_ir(ndim_ir))

      phi_ir=Cmplx(0.d0,0.d0,dp)

      !Call findtime(.true.,'readaph')
      WRITE(*,'(a)') 'Calulcating APH Surface Functions'
      !Call read_aph_ham
      Call aph_surface(0, whichir)
      !Call deall_aph_ham
      !Call findtime(.false.,'readaph')

      ALLOCATE(overlap_vec(totnaphsf,tstep)) 
      WRITE(*,'(a)') 'Propagating Wave Packet'
      Do tterm=1,tstep

       !if(tterm.le.2) Call findtime(.true.,'evolve')
       Call evolve( tterm, phi_ir, ndim_ir, whichir,nchir)
       !if(tterm.le.2) Call findtime(.false.,'evolve')

       !if(tterm.le.3) Call findtime(.true.,'project')
       Call project_aph( tterm, phi_ir, ndim_ir, whichir,nchir,ndim_sector)
       !if(tterm.le.3) Call findtime(.false.,'project')

      End Do

      !Call findtime(.false.,'ir')

      !Call findtime(.true.,'analysis')

      Call zanalysis(whichir)

      !Call findtime(.false.,'analysis')

      DEALLOCATE(phi_ir,overlap_vec)

    ENDIF
    
 Enddo ! IR LOOP

 21 FORMAT(/1X,'Starting for ir = ',a2,' in ',a,/1X,30('-'))
 22 FORMAT(/1X,'Starting for ir = ',a3,' in ',a,/1X,30('-'))

End Subroutine execute