ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/calc_eam.F90
(Generate patch)

Comparing trunk/OOPSE/libmdtools/calc_eam.F90 (file contents):
Revision 882 by chuckv, Wed Dec 17 20:13:33 2003 UTC vs.
Revision 1198 by tim, Thu May 27 00:48:12 2004 UTC

# Line 250 | Line 250 | contains
250    subroutine allocateEAM(status)
251      integer, intent(out) :: status
252  
253    integer :: nlocal
253   #ifdef IS_MPI
254 <    integer :: nrow
255 <    integer :: ncol
254 >    integer :: nAtomsInRow
255 >    integer :: nAtomsInCol
256   #endif
257      integer :: alloc_stat
258  
259  
261    nlocal = getNlocal()
260      status = 0
261   #ifdef IS_MPI
262 <    nrow = getNrow(plan_row)
263 <    ncol = getNcol(plan_col)
262 >    nAtomsInRow = getNatomsInRow(plan_atom_row)
263 >    nAtomsInCol = getNatomsInCol(plan_atom_col)
264   #endif
265  
266      if (allocated(frho)) deallocate(frho)
# Line 303 | Line 301 | contains
301  
302  
303      if (allocated(frho_row)) deallocate(frho_row)
304 <    allocate(frho_row(nrow),stat=alloc_stat)
304 >    allocate(frho_row(nAtomsInRow),stat=alloc_stat)
305      if (alloc_stat /= 0) then
306         status = -1
307         return
308      end if
309      if (allocated(rho_row)) deallocate(rho_row)
310 <    allocate(rho_row(nrow),stat=alloc_stat)
310 >    allocate(rho_row(nAtomsInRow),stat=alloc_stat)
311      if (alloc_stat /= 0) then
312         status = -1
313         return
314      end if
315      if (allocated(dfrhodrho_row)) deallocate(dfrhodrho_row)
316 <    allocate(dfrhodrho_row(nrow),stat=alloc_stat)
316 >    allocate(dfrhodrho_row(nAtomsInRow),stat=alloc_stat)
317      if (alloc_stat /= 0) then
318         status = -1
319         return
320      end if
321      if (allocated(d2frhodrhodrho_row)) deallocate(d2frhodrhodrho_row)
322 <    allocate(d2frhodrhodrho_row(nrow),stat=alloc_stat)
322 >    allocate(d2frhodrhodrho_row(nAtomsInRow),stat=alloc_stat)
323      if (alloc_stat /= 0) then
324         status = -1
325         return
# Line 331 | Line 329 | contains
329   ! Now do column arrays
330  
331      if (allocated(frho_col)) deallocate(frho_col)
332 <    allocate(frho_col(ncol),stat=alloc_stat)
332 >    allocate(frho_col(nAtomsInCol),stat=alloc_stat)
333      if (alloc_stat /= 0) then
334         status = -1
335         return
336      end if
337      if (allocated(rho_col)) deallocate(rho_col)
338 <    allocate(rho_col(ncol),stat=alloc_stat)
338 >    allocate(rho_col(nAtomsInCol),stat=alloc_stat)
339      if (alloc_stat /= 0) then
340         status = -1
341         return
342      end if
343      if (allocated(dfrhodrho_col)) deallocate(dfrhodrho_col)
344 <    allocate(dfrhodrho_col(ncol),stat=alloc_stat)
344 >    allocate(dfrhodrho_col(nAtomsInCol),stat=alloc_stat)
345      if (alloc_stat /= 0) then
346         status = -1
347         return
348      end if
349      if (allocated(d2frhodrhodrho_col)) deallocate(d2frhodrhodrho_col)
350 <    allocate(d2frhodrhodrho_col(ncol),stat=alloc_stat)
350 >    allocate(d2frhodrhodrho_col(nAtomsInCol),stat=alloc_stat)
351      if (alloc_stat /= 0) then
352         status = -1
353         return
# Line 569 | Line 567 | contains
567      cleanme = .true.
568      !! Scatter the electron density from  pre-pair calculation back to local atoms
569   #ifdef IS_MPI
570 <    call scatter(rho_row,rho,plan_row,eam_err)
570 >    call scatter(rho_row,rho,plan_atom_row,eam_err)
571      if (eam_err /= 0 ) then
572        write(errMsg,*) " Error scattering rho_row into rho"
573        call handleError(RoutineName,errMesg)
574     endif      
575 <    call scatter(rho_col,rho_tmp,plan_col,eam_err)
575 >    call scatter(rho_col,rho_tmp,plan_atom_col,eam_err)
576      if (eam_err /= 0 ) then
577        write(errMsg,*) " Error scattering rho_col into rho"
578        call handleError(RoutineName,errMesg)
# Line 619 | Line 617 | contains
617  
618   #ifdef IS_MPI
619      !! communicate f(rho) and derivatives back into row and column arrays
620 <    call gather(frho,frho_row,plan_row, eam_err)
620 >    call gather(frho,frho_row,plan_atom_row, eam_err)
621      if (eam_err /=  0) then
622         call handleError("cal_eam_forces()","MPI gather frho_row failure")
623      endif
624 <    call gather(dfrhodrho,dfrhodrho_row,plan_row, eam_err)
624 >    call gather(dfrhodrho,dfrhodrho_row,plan_atom_row, eam_err)
625      if (eam_err /=  0) then
626         call handleError("cal_eam_forces()","MPI gather dfrhodrho_row failure")
627      endif
628 <    call gather(frho,frho_col,plan_col, eam_err)
628 >    call gather(frho,frho_col,plan_atom_col, eam_err)
629      if (eam_err /=  0) then
630         call handleError("cal_eam_forces()","MPI gather frho_col failure")
631      endif
632 <    call gather(dfrhodrho,dfrhodrho_col,plan_col, eam_err)
632 >    call gather(dfrhodrho,dfrhodrho_col,plan_atom_col, eam_err)
633      if (eam_err /=  0) then
634         call handleError("cal_eam_forces()","MPI gather dfrhodrho_col failure")
635      endif
# Line 641 | Line 639 | contains
639  
640  
641      if (nmflag) then
642 <       call gather(d2frhodrhodrho,d2frhodrhodrho_row,plan_row)
643 <       call gather(d2frhodrhodrho,d2frhodrhodrho_col,plan_col)
642 >       call gather(d2frhodrhodrho,d2frhodrhodrho_row,plan_atom_row)
643 >       call gather(d2frhodrhodrho,d2frhodrhodrho_col,plan_atom_col)
644      endif
645   #endif
646  
# Line 653 | Line 651 | contains
651  
652  
653    !! Does EAM pairwise Force calculation.  
654 <  subroutine do_eam_pair(atom1,atom2,d,rij,r2,pot,f,do_pot,do_stress)
654 >  subroutine do_eam_pair(atom1, atom2, d, rij, r2, sw, vpair, fpair, &
655 >       pot, f, do_pot)
656      !Arguments    
657      integer, intent(in) ::  atom1, atom2
658      real( kind = dp ), intent(in) :: rij, r2
659 <    real( kind = dp ) :: pot
660 <    real( kind = dp ), dimension(3,getNlocal()) :: f
659 >    real( kind = dp ) :: pot, sw, vpair
660 >    real( kind = dp ), dimension(3,nLocal) :: f
661      real( kind = dp ), intent(in), dimension(3) :: d
662 <    logical, intent(in) :: do_pot, do_stress
662 >    real( kind = dp ), intent(inout), dimension(3) :: fpair
663 >
664 >    logical, intent(in) :: do_pot
665      
666      real( kind = dp ) :: drdx,drdy,drdz
667      real( kind = dp ) :: d2
# Line 813 | Line 814 | contains
814         f(3,atom2) = f(3,atom2) - fz
815   #endif
816        
817 +       vpair = vpair + phab
818 + #ifdef IS_MPI
819 +       id1 = AtomRowToGlobal(atom1)
820 +       id2 = AtomColToGlobal(atom2)
821 + #else
822 +       id1 = atom1
823 +       id2 = atom2
824 + #endif
825 +      
826 +       if (molMembershipList(id1) .ne. molMembershipList(id2)) then
827 +          
828 +          fpair(1) = fpair(1) + fx
829 +          fpair(2) = fpair(2) + fy
830 +          fpair(3) = fpair(3) + fz
831 +          
832 +       endif
833 +    
834         if (nmflag) then
835  
836            drhoidr = drha
# Line 836 | Line 854 | contains
854                 drhojdr*drhojdr*d2frhodrhodrho(atom1)
855   #endif
856         end if
839
840
857        
858 <      
843 <       if (do_stress) then
844 <          
845 < #ifdef IS_MPI
846 <          id1 = tagRow(atom1)
847 <          id2 = tagColumn(atom2)
848 < #else
849 <          id1 = atom1
850 <          id2 = atom2
851 < #endif
852 <          
853 <          if (molMembershipList(id1) .ne. molMembershipList(id2)) then
854 <
855 <             tau_Temp(1) = tau_Temp(1) - d(1) * fx
856 <             tau_Temp(2) = tau_Temp(2) - d(1) * fy
857 <             tau_Temp(3) = tau_Temp(3) - d(1) * fz
858 <             tau_Temp(4) = tau_Temp(4) - d(2) * fx
859 <             tau_Temp(5) = tau_Temp(5) - d(2) * fy
860 <             tau_Temp(6) = tau_Temp(6) - d(2) * fz
861 <             tau_Temp(7) = tau_Temp(7) - d(3) * fx
862 <             tau_Temp(8) = tau_Temp(8) - d(3) * fy
863 <             tau_Temp(9) = tau_Temp(9) - d(3) * fz
864 <
865 <             virial_Temp = virial_Temp + &
866 <                  (tau_Temp(1) + tau_Temp(5) + tau_Temp(9))
867 <
868 <          endif
869 <       endif  
870 <    endif
871 <
872 <    
858 >    endif    
859    end subroutine do_eam_pair
860  
861  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines