45 |
|
|
46 |
|
!! @author Charles F. Vardeman II |
47 |
|
!! @author Matthew Meineke |
48 |
< |
!! @version $Id: doForces.F90,v 1.14 2005-04-21 14:12:19 chrisfen Exp $, $Date: 2005-04-21 14:12:19 $, $Name: not supported by cvs2svn $, $Revision: 1.14 $ |
48 |
> |
!! @version $Id: doForces.F90,v 1.19 2005-05-29 21:15:52 chrisfen Exp $, $Date: 2005-05-29 21:15:52 $, $Name: not supported by cvs2svn $, $Revision: 1.19 $ |
49 |
|
|
50 |
|
|
51 |
|
module doForces |
89 |
|
logical, save :: FF_uses_Charges |
90 |
|
logical, save :: FF_uses_Dipoles |
91 |
|
logical, save :: FF_uses_Quadrupoles |
92 |
< |
logical, save :: FF_uses_sticky |
92 |
> |
logical, save :: FF_uses_Sticky |
93 |
> |
logical, save :: FF_uses_StickyPower |
94 |
|
logical, save :: FF_uses_GayBerne |
95 |
|
logical, save :: FF_uses_EAM |
96 |
|
logical, save :: FF_uses_Shapes |
104 |
|
logical, save :: SIM_uses_Dipoles |
105 |
|
logical, save :: SIM_uses_Quadrupoles |
106 |
|
logical, save :: SIM_uses_Sticky |
107 |
+ |
logical, save :: SIM_uses_StickyPower |
108 |
|
logical, save :: SIM_uses_GayBerne |
109 |
|
logical, save :: SIM_uses_EAM |
110 |
|
logical, save :: SIM_uses_Shapes |
136 |
|
logical :: is_Dipole = .false. |
137 |
|
logical :: is_Quadrupole = .false. |
138 |
|
logical :: is_Sticky = .false. |
139 |
+ |
logical :: is_StickyPower = .false. |
140 |
|
logical :: is_GayBerne = .false. |
141 |
|
logical :: is_EAM = .false. |
142 |
|
logical :: is_Shape = .false. |
199 |
|
|
200 |
|
call getElementProperty(atypes, i, "is_Sticky", thisProperty) |
201 |
|
PropertyMap(i)%is_Sticky = thisProperty |
202 |
+ |
|
203 |
+ |
call getElementProperty(atypes, i, "is_StickyPower", thisProperty) |
204 |
+ |
PropertyMap(i)%is_StickyPower = thisProperty |
205 |
|
|
206 |
|
call getElementProperty(atypes, i, "is_GayBerne", thisProperty) |
207 |
|
PropertyMap(i)%is_GayBerne = thisProperty |
227 |
|
SIM_uses_Charges = SimUsesCharges() |
228 |
|
SIM_uses_Dipoles = SimUsesDipoles() |
229 |
|
SIM_uses_Sticky = SimUsesSticky() |
230 |
+ |
SIM_uses_StickyPower = SimUsesStickyPower() |
231 |
|
SIM_uses_GayBerne = SimUsesGayBerne() |
232 |
|
SIM_uses_EAM = SimUsesEAM() |
233 |
|
SIM_uses_Shapes = SimUsesShapes() |
322 |
|
FF_uses_Charges = .false. |
323 |
|
FF_uses_Dipoles = .false. |
324 |
|
FF_uses_Sticky = .false. |
325 |
+ |
FF_uses_StickyPower = .false. |
326 |
|
FF_uses_GayBerne = .false. |
327 |
|
FF_uses_EAM = .false. |
328 |
|
FF_uses_Shapes = .false. |
372 |
|
FF_uses_DirectionalAtoms = .true. |
373 |
|
endif |
374 |
|
|
375 |
+ |
call getMatchingElementList(atypes, "is_StickyPower", .true., nMatches, & |
376 |
+ |
MatchList) |
377 |
+ |
if (nMatches .gt. 0) then |
378 |
+ |
FF_uses_StickyPower = .true. |
379 |
+ |
FF_uses_DirectionalAtoms = .true. |
380 |
+ |
endif |
381 |
+ |
|
382 |
|
call getMatchingElementList(atypes, "is_GayBerne", .true., & |
383 |
|
nMatches, MatchList) |
384 |
|
if (nMatches .gt. 0) then |
923 |
|
real ( kind = dp ), intent(inout) :: rijsq |
924 |
|
real ( kind = dp ) :: r |
925 |
|
real ( kind = dp ), intent(inout) :: d(3) |
926 |
+ |
real ( kind = dp ) :: ebalance |
927 |
|
integer :: me_i, me_j |
928 |
|
|
929 |
|
r = sqrt(rijsq) |
978 |
|
|
979 |
|
endif |
980 |
|
|
981 |
< |
|
981 |
> |
if (FF_uses_StickyPower .and. SIM_uses_stickypower) then |
982 |
> |
if ( PropertyMap(me_i)%is_StickyPower .and. & |
983 |
> |
PropertyMap(me_j)%is_StickyPower) then |
984 |
> |
call do_sticky_power_pair(i, j, d, r, rijsq, sw, vpair, fpair, & |
985 |
> |
pot, A, f, t, do_pot) |
986 |
> |
endif |
987 |
> |
endif |
988 |
> |
|
989 |
|
if (FF_uses_GayBerne .and. SIM_uses_GayBerne) then |
990 |
|
|
991 |
|
if ( PropertyMap(me_i)%is_GayBerne .and. & |
1263 |
|
logical :: doesit |
1264 |
|
doesit = FF_uses_DirectionalAtoms .or. FF_uses_Dipoles .or. & |
1265 |
|
FF_uses_Quadrupoles .or. FF_uses_Sticky .or. & |
1266 |
< |
FF_uses_GayBerne .or. FF_uses_Shapes |
1266 |
> |
FF_uses_StickyPower .or. FF_uses_GayBerne .or. FF_uses_Shapes |
1267 |
|
end function FF_UsesDirectionalAtoms |
1268 |
|
|
1269 |
|
function FF_RequiresPrepairCalc() result(doesit) |