45 |
|
|
46 |
|
!! @author Charles F. Vardeman II |
47 |
|
!! @author Matthew Meineke |
48 |
< |
!! @version $Id: doForces.F90,v 1.10 2005-01-14 20:31:12 gezelter Exp $, $Date: 2005-01-14 20:31:12 $, $Name: not supported by cvs2svn $, $Revision: 1.10 $ |
48 |
> |
!! @version $Id: doForces.F90,v 1.11 2005-03-08 21:05:46 gezelter Exp $, $Date: 2005-03-08 21:05:46 $, $Name: not supported by cvs2svn $, $Revision: 1.11 $ |
49 |
|
|
50 |
|
|
51 |
|
module doForces |
57 |
|
use neighborLists |
58 |
|
use lj |
59 |
|
use sticky |
60 |
< |
use dipole_dipole |
61 |
< |
use charge_charge |
60 |
> |
use electrostatic_module |
61 |
|
use reaction_field |
62 |
|
use gb_pair |
63 |
|
use shapes |
85 |
|
|
86 |
|
logical, save :: FF_uses_DirectionalAtoms |
87 |
|
logical, save :: FF_uses_LennardJones |
88 |
< |
logical, save :: FF_uses_Electrostatic |
89 |
< |
logical, save :: FF_uses_charges |
90 |
< |
logical, save :: FF_uses_dipoles |
88 |
> |
logical, save :: FF_uses_Electrostatics |
89 |
> |
logical, save :: FF_uses_Charges |
90 |
> |
logical, save :: FF_uses_Dipoles |
91 |
> |
logical, save :: FF_uses_Quadrupoles |
92 |
|
logical, save :: FF_uses_sticky |
93 |
|
logical, save :: FF_uses_GayBerne |
94 |
|
logical, save :: FF_uses_EAM |
101 |
|
logical, save :: SIM_uses_Electrostatics |
102 |
|
logical, save :: SIM_uses_Charges |
103 |
|
logical, save :: SIM_uses_Dipoles |
104 |
+ |
logical, save :: SIM_uses_Quadrupoles |
105 |
|
logical, save :: SIM_uses_Sticky |
106 |
|
logical, save :: SIM_uses_GayBerne |
107 |
|
logical, save :: SIM_uses_EAM |
132 |
|
logical :: is_Electrostatic = .false. |
133 |
|
logical :: is_Charge = .false. |
134 |
|
logical :: is_Dipole = .false. |
135 |
+ |
logical :: is_Quadrupole = .false. |
136 |
|
logical :: is_Sticky = .false. |
137 |
|
logical :: is_GayBerne = .false. |
138 |
|
logical :: is_EAM = .false. |
191 |
|
call getElementProperty(atypes, i, "is_Dipole", thisProperty) |
192 |
|
PropertyMap(i)%is_Dipole = thisProperty |
193 |
|
|
194 |
+ |
call getElementProperty(atypes, i, "is_Quadrupole", thisProperty) |
195 |
+ |
PropertyMap(i)%is_Quadrupole = thisProperty |
196 |
+ |
|
197 |
|
call getElementProperty(atypes, i, "is_Sticky", thisProperty) |
198 |
|
PropertyMap(i)%is_Sticky = thisProperty |
199 |
|
|
311 |
|
|
312 |
|
FF_uses_DirectionalAtoms = .false. |
313 |
|
FF_uses_LennardJones = .false. |
314 |
< |
FF_uses_Electrostatic = .false. |
314 |
> |
FF_uses_Electrostatics = .false. |
315 |
|
FF_uses_Charges = .false. |
316 |
|
FF_uses_Dipoles = .false. |
317 |
|
FF_uses_Sticky = .false. |
331 |
|
call getMatchingElementList(atypes, "is_Electrostatic", .true., & |
332 |
|
nMatches, MatchList) |
333 |
|
if (nMatches .gt. 0) then |
334 |
< |
FF_uses_Electrostatic = .true. |
334 |
> |
FF_uses_Electrostatics = .true. |
335 |
|
endif |
336 |
|
|
337 |
|
call getMatchingElementList(atypes, "is_Charge", .true., & |
338 |
|
nMatches, MatchList) |
339 |
|
if (nMatches .gt. 0) then |
340 |
< |
FF_uses_charges = .true. |
341 |
< |
FF_uses_electrostatic = .true. |
340 |
> |
FF_uses_Charges = .true. |
341 |
> |
FF_uses_Electrostatics = .true. |
342 |
|
endif |
343 |
|
|
344 |
|
call getMatchingElementList(atypes, "is_Dipole", .true., & |
345 |
|
nMatches, MatchList) |
346 |
|
if (nMatches .gt. 0) then |
347 |
< |
FF_uses_dipoles = .true. |
348 |
< |
FF_uses_electrostatic = .true. |
347 |
> |
FF_uses_Dipoles = .true. |
348 |
> |
FF_uses_Electrostatics = .true. |
349 |
> |
FF_uses_DirectionalAtoms = .true. |
350 |
> |
endif |
351 |
> |
|
352 |
> |
call getMatchingElementList(atypes, "is_Quadrupole", .true., & |
353 |
> |
nMatches, MatchList) |
354 |
> |
if (nMatches .gt. 0) then |
355 |
> |
FF_uses_Quadrupoles = .true. |
356 |
> |
FF_uses_Electrostatics = .true. |
357 |
|
FF_uses_DirectionalAtoms = .true. |
358 |
|
endif |
359 |
|
|
933 |
|
|
934 |
|
endif |
935 |
|
|
936 |
< |
if (FF_uses_charges .and. SIM_uses_charges) then |
936 |
> |
if (FF_uses_Electrostatics .and. SIM_uses_Electrostatics) then |
937 |
|
|
938 |
< |
if (PropertyMap(me_i)%is_Charge .and. PropertyMap(me_j)%is_Charge) then |
939 |
< |
call do_charge_pair(i, j, d, r, rijsq, sw, vpair, fpair, & |
940 |
< |
pot, f, do_pot) |
938 |
> |
if (PropertyMap(me_i)%is_Electrostatic .and. & |
939 |
> |
PropertyMap(me_j)%is_Electrostatic) then |
940 |
> |
call doElectrostaticPair(i, j, d, r, rijsq, sw, vpair, fpair, & |
941 |
> |
pot, eFrame, f, t, do_pot) |
942 |
|
endif |
943 |
|
|
944 |
< |
endif |
945 |
< |
|
946 |
< |
if (FF_uses_dipoles .and. SIM_uses_dipoles) then |
947 |
< |
|
948 |
< |
if ( PropertyMap(me_i)%is_Dipole .and. PropertyMap(me_j)%is_Dipole) then |
949 |
< |
call do_dipole_pair(i, j, d, r, rijsq, sw, vpair, fpair, & |
950 |
< |
pot, eFrame, f, t, do_pot) |
937 |
< |
if (FF_uses_RF .and. SIM_uses_RF) then |
938 |
< |
call accumulate_rf(i, j, r, eFrame, sw) |
939 |
< |
call rf_correct_forces(i, j, d, r, eFrame, sw, f, fpair) |
944 |
> |
if (FF_uses_dipoles .and. SIM_uses_dipoles) then |
945 |
> |
if ( PropertyMap(me_i)%is_Dipole .and. & |
946 |
> |
PropertyMap(me_j)%is_Dipole) then |
947 |
> |
if (FF_uses_RF .and. SIM_uses_RF) then |
948 |
> |
call accumulate_rf(i, j, r, eFrame, sw) |
949 |
> |
call rf_correct_forces(i, j, d, r, eFrame, sw, f, fpair) |
950 |
> |
endif |
951 |
|
endif |
952 |
|
endif |
942 |
– |
|
953 |
|
endif |
954 |
|
|
955 |
+ |
|
956 |
|
if (FF_uses_Sticky .and. SIM_uses_sticky) then |
957 |
|
|
958 |
|
if ( PropertyMap(me_i)%is_Sticky .and. PropertyMap(me_j)%is_Sticky) then |
1233 |
|
function FF_UsesDirectionalAtoms() result(doesit) |
1234 |
|
logical :: doesit |
1235 |
|
doesit = FF_uses_DirectionalAtoms .or. FF_uses_Dipoles .or. & |
1236 |
< |
FF_uses_Sticky .or. FF_uses_GayBerne .or. FF_uses_Shapes |
1236 |
> |
FF_uses_Quadrupoles .or. FF_uses_Sticky .or. & |
1237 |
> |
FF_uses_GayBerne .or. FF_uses_Shapes |
1238 |
|
end function FF_UsesDirectionalAtoms |
1239 |
|
|
1240 |
|
function FF_RequiresPrepairCalc() result(doesit) |