turbo_magnon porting

This commit is contained in:
Oscar Baseggio 2022-04-21 11:43:42 +02:00
parent e6fa3fea7b
commit 3192e70ca7
6 changed files with 14 additions and 10 deletions

View File

@ -122,7 +122,7 @@ SUBROUTINE lr_Opsi_magnons (ik, ip, dOpsi)
ELSE
!
! FFT to R-space
!$acc data copyin(evc) copy(revc, dOpsi)
!$acc data copyin(evc(1:npwx*npol,ibnd)) copy(revc, dOpsi(1:npwx*npol,ibnd,1))
CALL cft_wave(ik, evc(1,ibnd), revc, +1)
!
! back-FFT to G-space
@ -174,7 +174,7 @@ SUBROUTINE lr_Opsi_magnons (ik, ip, dOpsi)
ELSE
!
! FFT to R-space
!$acc data copyin(Tevc) copy(revc, dOpsi)
!$acc data copyin(Tevc(1:npwx*npol,ibnd)) copy(revc, dOpsi(1:npwx*npol,ibnd,2))
CALL cft_wave(ik, Tevc(1,ibnd), revc, +1)
!
! back-FFT to G-space

View File

@ -152,7 +152,8 @@ SUBROUTINE lr_apply_liouvillian_magnons( evc1, evc1_new, L_dag )
! The vkb's are needed for the non-local potential in h_psi,
! and for the ultrasoft term.
!
CALL init_us_2 (npwq, igk_k(1,ikq), xk(1,ikq), vkb)
CALL init_us_2 (npwq, igk_k(1,ikq), xk(1,ikq), vkb, .true.)
!$acc update host(vkb)
!
! Read unperturbed wavefuctions evc (wfct at k)
! and evq (wfct at k+q)
@ -258,7 +259,9 @@ SUBROUTINE lr_apply_liouvillian_magnons( evc1, evc1_new, L_dag )
! Apply the operator ( H - \epsilon S + alpha_pv P_v) to evc1
! where alpha_pv = 0
!
!$acc data copyin(evq) copy(evc1(1:npwx*npol,1:nbnd,ik,1),sevc1_new(1:npwx*npol,1:nbnd,ik), et(:,ikk))
CALL ch_psi_all (npwq, evc1(:,:,ik,1), sevc1_new(:,:,ik,1), et(:,ikk), ik, nbnd_occ(ikk))
!$acc end data
!
IF (ALLOCATED(psic_nc)) DEALLOCATE(psic_nc)
!
@ -403,7 +406,9 @@ SUBROUTINE lr_apply_liouvillian_magnons( evc1, evc1_new, L_dag )
! Apply the operator ( H - \epsilon S + alpha_pv P_v) to evc1
! where alpha_pv = 0
!
!$acc data copyin(evq) copy(evc1(1:npwx*npol,1:nbnd,ik,2),sevc1_new(1:npwx*npol,1:nbnd,ik,2), et(:,imk))
CALL ch_psi_all (npwq, evc1(:,:,ik,2), sevc1_new(:,:,ik,2), et(:,imk), ik, nbnd_occ(imk))
!$acc end data
!
! Change the sign of b_xc back
!

View File

@ -124,7 +124,7 @@ SUBROUTINE lr_dvpsi_magnons (ik, ip, dvpsi)
ELSE
!
! FFT to R-space
!$acc data copyin(evc) copy(revc, dvpsi)
!$acc data copyin(evc(1:npwx*npol,ibnd)) copy(revc(1:dffts%nnr, 1:npol), dvpsi(1:npwx*npol,ibnd,1))
CALL cft_wave(ik, evc(1,ibnd), revc, +1)
!
! back-FFT to G-space
@ -182,7 +182,7 @@ SUBROUTINE lr_dvpsi_magnons (ik, ip, dvpsi)
ELSE
!
! FFT to R-space
!$acc data copyin(Tevc) copy(revc, dvpsi)
!$acc data copyin(Tevc(1:npwx*npol,ibnd)) copy(revc, dvpsi(1:npwx*npol,ibnd,2))
CALL cft_wave(ik, Tevc(1,ibnd), revc, +1)
!
! back-FFT to G-space

View File

@ -170,7 +170,8 @@ SUBROUTINE lr_init_nfo()
CALL get_buffer (evc, nwordwfc, iunwfc, ikk)
!
! Calculate beta-functions vkb at point k
CALL init_us_2(npw, igk_k(1,ikk), xk(1,ikk), vkb)
CALL init_us_2(npw, igk_k(1,ikk), xk(1,ikk), vkb, .true.)
!$acc update host(vkb)
!
! Calculate becp1=<vkb|evc>
CALL calbec (npw, vkb, evc, becp1(ik))

View File

@ -61,9 +61,6 @@ PROGRAM lr_magnons_main
pol_index = 1
!
CALL mp_startup ( )
CALL laxlib_start ( ndiag_, intra_bgrp_comm, do_distr_diag_inside_bgrp_ = .true. )
CALL set_mpi_comm_4_solvers( intra_pool_comm, intra_bgrp_comm, &
inter_bgrp_comm )
!
CALL environment_start ( code3 )
!

View File

@ -214,7 +214,8 @@ SUBROUTINE normal_read()
!
DO ik = 1, nks
!
CALL init_us_2(ngk(ik),igk_k(1,ik),xk(1,ik),vkb)
CALL init_us_2(ngk(ik),igk_k(1,ik),xk(1,ik),vkb,.true.)
!$acc update host(vkb)
CALL calbec(ngk(ik),vkb,evc0(:,:,ik),becp1_c(:,:,ik))
becp%k = becp1_c(:,:,ik)
CALL s_psi (npwx, ngk(ik), nbnd, evc0(:,:,ik), sevc0(:,:,ik))