From 12b9b8d5b66ced3f5869bbc9c3c933b01277baac Mon Sep 17 00:00:00 2001 From: dalcorso Date: Tue, 29 Apr 2008 13:36:38 +0000 Subject: [PATCH] Bug fix: after the recent commits the atomic code was unable to make the test of a paw pseudopotential. git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4849 c92efa57-630b-4861-b058-cf58834340f0 --- atomic/atomic_paw.f90 | 1 + atomic/import_upf.f90 | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/atomic/atomic_paw.f90 b/atomic/atomic_paw.f90 index a0e8e2c7c..39050be94 100644 --- a/atomic/atomic_paw.f90 +++ b/atomic/atomic_paw.f90 @@ -58,6 +58,7 @@ MODULE atomic_paw PUBLIC :: check_multipole PUBLIC :: new_paw_hamiltonian PUBLIC :: find_bes_qi + PUBLIC :: compute_nonlocal_coeff_ion ! CONTAINS ! diff --git a/atomic/import_upf.f90 b/atomic/import_upf.f90 index 6e2f4b2a7..d343ac478 100644 --- a/atomic/import_upf.f90 +++ b/atomic/import_upf.f90 @@ -174,12 +174,15 @@ subroutine import_upf which_augfun = upf%paw%augshape rmatch_augfun = upf%paw%raug call allocate_pseudo_paw( pawsetup, grid%mesh, nbeta, lmax ) + CALL nullify_radial_grid( pawsetup%grid ) + call allocate_radial_grid(pawsetup%grid,grid%mesh) call set_pawsetup( pawsetup, upf ) endif CALL deallocate_pseudo_upf( upf ) CALL deallocate_radial_grid( rgrid ) + end subroutine import_upf SUBROUTINE set_pawsetup(pawset_, upf_) @@ -187,9 +190,13 @@ USE kinds, ONLY : DP USE constants, ONLY : fpi USE paw_type, ONLY : paw_t USE pseudo_types, ONLY: pseudo_upf +USE ld1_parameters, ONLY: nwfsx +USE radial_grids, ONLY : radial_grid_copy +USE atomic_paw, ONLY : compute_nonlocal_coeff_ion IMPLICIT NONE TYPE(paw_t), INTENT(INOUT) :: pawset_ TYPE(pseudo_upf), INTENT(IN) :: upf_ +REAL(DP), ALLOCATABLE :: ddd_(:,:) INTEGER :: mesh, nbeta,ih,jh,ijh nbeta=upf_%nbeta @@ -223,7 +230,7 @@ INTEGER :: mesh, nbeta,ih,jh,ijh pawset_%pscharge(1:mesh) = upf_%rho_at(1:mesh) pawset_%aeloc(1:mesh) = upf_%paw%ae_vloc(1:mesh) pawset_%psloc(1:mesh) = upf_%vloc(1:mesh) - !pawset_%kdiff(1:nbeta,1:nbeta) = upf_%paw%kdiff(1:nbeta,1:nbeta) + pawset_%kdiff(1:nbeta,1:nbeta) = 0.0_DP pawset_%dion (1:nbeta,1:nbeta) = upf_%dion(1:nbeta,1:nbeta) pawset_%symbol=upf_%psd pawset_%zval=upf_%zp @@ -233,7 +240,16 @@ INTEGER :: mesh, nbeta,ih,jh,ijh pawset_%irc=upf_%kkbeta pawset_%lmax=upf_%lmax pawset_%rmatch_augfun=upf_%paw%raug - pawset_%grid= upf_%grid + CALL radial_grid_copy(upf_%grid, pawset_%grid) +! +! The kinetic energy must be recalculated +! + ALLOCATE(ddd_(nwfsx,nwfsx)) + + CALL compute_nonlocal_coeff_ion(ddd_, pawset_) + pawset_%kdiff(1:nbeta,1:nbeta) = upf_%dion(1:nbeta,1:nbeta)- & + ddd_(1:nbeta,1:nbeta) + + DEALLOCATE(ddd_) END SUBROUTINE set_pawsetup -