00001 subroutine error_surface(pot,pot_bak,error,flag)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg, ntg, npg, eps
00004 implicit none
00005 real(long), pointer :: pot(:,:), pot_bak(:,:)
00006 real(long), intent(out) :: error
00007 integer, intent(out) :: flag
00008 real(long) :: error_pot = 0.0d0, small = 1.0d-14
00009 integer :: itg, ipg
00010
00011
00012 error = 0.0d0
00013 flag = 0
00014 do itg = 0, ntg
00015 do ipg = 0, npg
00016 error_pot = 2.0d0*dabs(pot(itg,ipg) - pot_bak(itg,ipg)) &
00017 & /(dabs(pot(itg,ipg))+dabs(pot_bak(itg,ipg))+small)
00018 if (error_pot > eps*0.3) flag = 1
00019 error = dmax1(error,error_pot)
00020 end do
00021 end do
00022 end subroutine error_surface