TABLE OF CONTENTS
ABINIT/gam_mult_displ [ Functions ]
NAME
gam_mult_displ
FUNCTION
This routine takes the bare gamma matrices and multiplies them by the displ_red matrices (related to the scalprod variable)
COPYRIGHT
Copyright (C) 2009-2018 ABINIT group (MVer) This file is distributed under the terms of the GNU General Public Licence, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt . For the initials of contributors, see ~abinit/doc/developers/contributors.txt .
INPUTS
nbranch = number of phonon branches (3*natom) displ_red = phonon mode displacement vectors in reduced coordinates. gam_bare = bare gamma matrices before multiplication
OUTPUT
gam_now = output gamma matrices multiplied by displacement matrices
PARENTS
get_tau_k,m_phgamma,mka2f,mka2f_tr,mka2f_tr_lova,mkph_linwid,nmsq_gam nmsq_gam_sumfs,nmsq_pure_gkk,nmsq_pure_gkk_sumfs,normsq_gkq
CHILDREN
zgemm
SOURCE
34 #if defined HAVE_CONFIG_H 35 #include "config.h" 36 #endif 37 38 #include "abi_common.h" 39 40 41 subroutine gam_mult_displ(nbranch, displ_red, gam_bare, gam_now) 42 43 use defs_basis 44 use m_profiling_abi 45 46 !This section has been created automatically by the script Abilint (TD). 47 !Do not modify the following lines by hand. 48 #undef ABI_FUNC 49 #define ABI_FUNC 'gam_mult_displ' 50 !End of the abilint section 51 52 implicit none 53 54 !Arguments ------------------------------- 55 integer, intent(in) :: nbranch 56 real(dp), intent(in) :: displ_red(2,nbranch,nbranch) 57 real(dp), intent(in) :: gam_bare(2,nbranch,nbranch) 58 real(dp), intent(out) :: gam_now(2,nbranch,nbranch) 59 60 !Local variables ------------------------- 61 real(dp) :: zgemm_tmp_mat(2,nbranch,nbranch) 62 63 ! ********************************************************************* 64 65 gam_now = zero 66 67 call zgemm('c','n',nbranch,nbranch,nbranch,cone,& 68 & displ_red,nbranch,gam_bare,& 69 & nbranch,czero,zgemm_tmp_mat,nbranch) 70 71 call zgemm('n','n',nbranch,nbranch,nbranch,cone,& 72 & zgemm_tmp_mat,nbranch,displ_red,& 73 & nbranch,czero,gam_now,nbranch) 74 75 end subroutine gam_mult_displ