Apply_symm_vec.F Source File


Source Code

!
! License-Identifier: GPL
!
! Copyright (C) 2016 The Yambo Team
!
! Authors (see AUTHORS file for details): CA
!
!> @brief Apply residual symmetries if present
!!
subroutine Apply_symm_vec(vec)
 !
 ! Apply symmetries to a complex vector      
 !
 use pars,           ONLY:SP,DP,cZERO
 use D_lattice,      ONLY:nsym,dl_sop,i_time_rev
 use electric,       ONLY:l_no_res_symms
 !
 implicit none           
 !
 complex(SP),   intent(inout)  :: vec(3)
 !
 ! Work Space
 !
 complex(SP)   :: V_tmp(3)
 integer       :: is
 !
 if(nsym/=1) then
   V_tmp=cZERO
!$omp parallel do default(shared), private(is),reduction(+:V_tmp)
   do is=1,nsym/(i_time_rev+1) ! Time-reversal is never present 
     V_tmp=V_tmp+matmul(dl_sop(:,:,is),vec)
   enddo
!$omp end parallel do
   vec=V_tmp/dble(nsym/(i_time_rev+1))
 else
   return
 endif
 !
end subroutine Apply_symm_vec

📚 Documentation Pages
⏱️ Real-Time
🔗 Code API