4 |
|
|
5 |
|
!! @author Charles F. Vardeman II |
6 |
|
!! @author Matthew Meineke |
7 |
< |
!! @version $Id: do_Forces.F90,v 1.21 2003-07-16 21:30:55 mmeineke Exp $, $Date: 2003-07-16 21:30:55 $, $Name: not supported by cvs2svn $, $Revision: 1.21 $ |
7 |
> |
!! @version $Id: do_Forces.F90,v 1.22 2003-07-17 19:25:51 chuckv Exp $, $Date: 2003-07-17 19:25:51 $, $Name: not supported by cvs2svn $, $Revision: 1.22 $ |
8 |
|
|
9 |
|
module do_Forces |
10 |
|
use force_globals |
603 |
|
end subroutine do_pair |
604 |
|
|
605 |
|
|
606 |
+ |
|
607 |
+ |
subroutine do_preforce(i, j, rijsq, d, do_pot, do_stress, u_l, A, f, t, pot) |
608 |
+ |
real( kind = dp ) :: pot |
609 |
+ |
real( kind = dp ), dimension(3,getNlocal()) :: u_l |
610 |
+ |
real (kind=dp), dimension(9,getNlocal()) :: A |
611 |
+ |
real (kind=dp), dimension(3,getNlocal()) :: f |
612 |
+ |
real (kind=dp), dimension(3,getNlocal()) :: t |
613 |
+ |
|
614 |
+ |
logical, intent(inout) :: do_pot, do_stress |
615 |
+ |
integer, intent(in) :: i, j |
616 |
+ |
real ( kind = dp ), intent(inout) :: rijsq |
617 |
+ |
real ( kind = dp ) :: r |
618 |
+ |
real ( kind = dp ), intent(inout) :: d(3) |
619 |
+ |
|
620 |
+ |
logical :: is_EAM_i, is_EAM_j |
621 |
+ |
|
622 |
+ |
integer :: me_i, me_j |
623 |
+ |
|
624 |
+ |
r = sqrt(rijsq) |
625 |
+ |
|
626 |
+ |
#ifdef IS_MPI |
627 |
+ |
if (tagRow(i) .eq. tagColumn(j)) then |
628 |
+ |
write(0,*) 'do_pair is doing', i , j, tagRow(i), tagColumn(j) |
629 |
+ |
endif |
630 |
+ |
|
631 |
+ |
me_i = atid_row(i) |
632 |
+ |
me_j = atid_col(j) |
633 |
+ |
|
634 |
+ |
#else |
635 |
+ |
|
636 |
+ |
me_i = atid(i) |
637 |
+ |
me_j = atid(j) |
638 |
+ |
|
639 |
+ |
#endif |
640 |
+ |
|
641 |
+ |
if (FF_uses_EAM .and. SimUsesEAM()) then |
642 |
+ |
call getElementProperty(atypes, me_i, "is_EAM", is_EAM_i) |
643 |
+ |
call getElementProperty(atypes, me_j, "is_EAM", is_EAM_j) |
644 |
+ |
|
645 |
+ |
if ( is_EAM_i .and. is_EAM_j ) & |
646 |
+ |
call calc_EAM_prepair(i, j, d, r, rijsq ) |
647 |
+ |
endif |
648 |
+ |
end subroutine do_preforce |
649 |
+ |
|
650 |
+ |
|
651 |
|
subroutine get_interatomic_vector(q_i, q_j, d, r_sq) |
652 |
|
|
653 |
|
real (kind = dp), dimension(3) :: q_i |