4 |
|
|
5 |
|
!! @author Charles F. Vardeman II |
6 |
|
!! @author Matthew Meineke |
7 |
< |
!! @version $Id: do_Forces.F90,v 1.24 2003-03-18 16:46:47 gezelter Exp $, $Date: 2003-03-18 16:46:47 $, $Name: not supported by cvs2svn $, $Revision: 1.24 $ |
7 |
> |
!! @version $Id: do_Forces.F90,v 1.25 2003-03-18 21:28:21 gezelter Exp $, $Date: 2003-03-18 21:28:21 $, $Name: not supported by cvs2svn $, $Revision: 1.25 $ |
8 |
|
|
9 |
|
module do_Forces |
10 |
|
use force_globals |
16 |
|
use sticky_pair |
17 |
|
use dipole_dipole |
18 |
|
use reaction_field |
19 |
+ |
use gb_pair |
20 |
|
#ifdef IS_MPI |
21 |
|
use mpiSimulation |
22 |
|
#endif |
135 |
|
end if |
136 |
|
endif |
137 |
|
|
138 |
< |
|
138 |
> |
if (FF_uses_GB) then |
139 |
> |
call check_gb_pair_FF(my_status) |
140 |
> |
if (my_status .ne. 0) then |
141 |
> |
thisStat = -1 |
142 |
> |
return |
143 |
> |
endif |
144 |
> |
endif |
145 |
> |
|
146 |
> |
if (FF_uses_GB .and. FF_uses_LJ) then |
147 |
> |
endif |
148 |
> |
|
149 |
> |
|
150 |
|
do_forces_initialized = .true. |
151 |
|
|
152 |
|
end subroutine init_FF |
153 |
|
|
142 |
– |
|
154 |
|
|
155 |
|
!! Does force loop over i,j pairs. Calls do_pair to calculates forces. |
156 |
|
!-------------------------------------------------------------> |
487 |
|
subroutine do_pair(i, j, rijsq, d, do_pot, do_stress, u_l, A, f, t) |
488 |
|
|
489 |
|
real( kind = dp ) :: pot |
490 |
< |
real( kind = dp ), dimension(3,getNlocal()) :: u_l |
491 |
< |
real (kind=dp), dimension(9,getNlocal()) :: A |
492 |
< |
real (kind=dp), dimension(3,getNlocal()) :: f |
493 |
< |
real (kind=dp), dimension(3,getNlocal()) :: t |
490 |
> |
real( kind = dp ), dimension(:,:) :: u_l |
491 |
> |
real (kind=dp), dimension(:,:) :: A |
492 |
> |
real (kind=dp), dimension(:,:) :: f |
493 |
> |
real (kind=dp), dimension(:,:) :: t |
494 |
|
|
495 |
|
logical, intent(inout) :: do_pot, do_stress |
496 |
|
integer, intent(in) :: i, j |
499 |
|
real ( kind = dp ), intent(inout) :: d(3) |
500 |
|
logical :: is_LJ_i, is_LJ_j |
501 |
|
logical :: is_DP_i, is_DP_j |
502 |
+ |
logical :: is_GB_i, is_GB_j |
503 |
|
logical :: is_Sticky_i, is_Sticky_j |
504 |
|
integer :: me_i, me_j |
505 |
|
|
552 |
|
if ( is_Sticky_i .and. is_Sticky_j ) then |
553 |
|
call do_sticky_pair(i, j, d, r, rijsq, A, pot, f, t, & |
554 |
|
do_pot, do_stress) |
555 |
+ |
endif |
556 |
+ |
endif |
557 |
+ |
|
558 |
+ |
|
559 |
+ |
if (FF_uses_GB .and. SimUsesGB()) then |
560 |
+ |
|
561 |
+ |
call getElementProperty(atypes, me_i, "is_GB", is_GB_i) |
562 |
+ |
call getElementProperty(atypes, me_j, "is_GB", is_GB_j) |
563 |
+ |
|
564 |
+ |
if ( is_GB_i .and. is_GB_j ) then |
565 |
+ |
call do_gb_pair(i, j, d, r, rijsq, u_l, pot, f, t, & |
566 |
+ |
do_pot, do_stress) |
567 |
|
endif |
568 |
|
endif |
569 |
|
|