45 |
|
|
46 |
|
!! @author Charles F. Vardeman II |
47 |
|
!! @author Matthew Meineke |
48 |
< |
!! @version $Id: doForces.F90,v 1.90 2007-05-22 19:30:27 chuckv Exp $, $Date: 2007-05-22 19:30:27 $, $Name: not supported by cvs2svn $, $Revision: 1.90 $ |
48 |
> |
!! @version $Id: doForces.F90,v 1.91 2007-07-12 23:20:00 chuckv Exp $, $Date: 2007-07-12 23:20:00 $, $Name: not supported by cvs2svn $, $Revision: 1.91 $ |
49 |
|
|
50 |
|
|
51 |
|
module doForces |
62 |
|
use shapes |
63 |
|
use vector_class |
64 |
|
use eam |
65 |
+ |
use MetalNonMetal |
66 |
|
use suttonchen |
67 |
|
use status |
68 |
|
#ifdef IS_MPI |
97 |
|
logical, save :: FF_uses_GayBerne |
98 |
|
logical, save :: FF_uses_EAM |
99 |
|
logical, save :: FF_uses_SC |
100 |
< |
logical, save :: FF_uses_MEAM |
100 |
> |
logical, save :: FF_uses_MNM |
101 |
|
|
102 |
|
|
103 |
|
logical, save :: SIM_uses_DirectionalAtoms |
104 |
|
logical, save :: SIM_uses_EAM |
105 |
|
logical, save :: SIM_uses_SC |
106 |
< |
logical, save :: SIM_uses_MEAM |
106 |
> |
logical, save :: SIM_uses_MNM |
107 |
|
logical, save :: SIM_requires_postpair_calc |
108 |
|
logical, save :: SIM_requires_prepair_calc |
109 |
|
logical, save :: SIM_uses_PBC |
171 |
|
logical :: i_is_EAM |
172 |
|
logical :: i_is_Shape |
173 |
|
logical :: i_is_SC |
173 |
– |
logical :: i_is_MEAM |
174 |
|
logical :: j_is_LJ |
175 |
|
logical :: j_is_Elect |
176 |
|
logical :: j_is_Sticky |
179 |
|
logical :: j_is_EAM |
180 |
|
logical :: j_is_Shape |
181 |
|
logical :: j_is_SC |
182 |
– |
logical :: j_is_MEAM |
182 |
|
real(kind=dp) :: myRcut |
183 |
|
|
184 |
|
if (.not. associated(atypes)) then |
216 |
|
call getElementProperty(atypes, i, "is_EAM", i_is_EAM) |
217 |
|
call getElementProperty(atypes, i, "is_Shape", i_is_Shape) |
218 |
|
call getElementProperty(atypes, i, "is_SC", i_is_SC) |
220 |
– |
call getElementProperty(atypes, i, "is_MEAM", i_is_MEAM) |
219 |
|
|
220 |
|
do j = i, nAtypes |
221 |
|
|
230 |
|
call getElementProperty(atypes, j, "is_EAM", j_is_EAM) |
231 |
|
call getElementProperty(atypes, j, "is_Shape", j_is_Shape) |
232 |
|
call getElementProperty(atypes, j, "is_SC", j_is_SC) |
235 |
– |
call getElementProperty(atypes, j, "is_MEAM", j_is_MEAM) |
233 |
|
|
234 |
|
if (i_is_LJ .and. j_is_LJ) then |
235 |
|
iHash = ior(iHash, LJ_PAIR) |
258 |
|
if (i_is_GB .and. j_is_GB) iHash = ior(iHash, GAYBERNE_PAIR) |
259 |
|
if (i_is_GB .and. j_is_LJ) iHash = ior(iHash, GAYBERNE_LJ) |
260 |
|
if (i_is_LJ .and. j_is_GB) iHash = ior(iHash, GAYBERNE_LJ) |
261 |
+ |
|
262 |
+ |
if ((i_is_EAM.or.i_is_SC).and.(.not.(j_is_EAM.or.j_is_SC))) iHash = ior(iHash, MNM_PAIR) |
263 |
+ |
if ((j_is_EAM.or.j_is_SC).and.(.not.(i_is_EAM.or.i_is_SC))) iHash = ior(iHash, MNM_PAIR) |
264 |
|
|
265 |
|
if (i_is_Shape .and. j_is_Shape) iHash = ior(iHash, SHAPE_PAIR) |
266 |
|
if (i_is_Shape .and. j_is_LJ) iHash = ior(iHash, SHAPE_LJ) |
603 |
|
call setElectrostaticCutoffRadius( defaultRcut, defaultRsw ) |
604 |
|
call setCutoffEAM( defaultRcut ) |
605 |
|
call setCutoffSC( defaultRcut ) |
606 |
+ |
call setMnMDefaultCutoff( defaultRcut, defaultDoShiftPot, & |
607 |
+ |
defaultDoShiftFrc ) |
608 |
|
call set_switch(defaultRsw, defaultRcut) |
609 |
|
call setHmatDangerousRcutValue(defaultRcut) |
610 |
|
|
1753 |
|
|
1754 |
|
function FF_RequiresPrepairCalc() result(doesit) |
1755 |
|
logical :: doesit |
1756 |
< |
doesit = FF_uses_EAM .or. FF_uses_SC & |
1755 |
< |
.or. FF_uses_MEAM |
1756 |
> |
doesit = FF_uses_EAM .or. FF_uses_SC |
1757 |
|
end function FF_RequiresPrepairCalc |
1758 |
|
|
1759 |
|
#ifdef PROFILE |