ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/notifyCutoffs.F90
Revision: 1239
Committed: Fri Jun 4 14:59:27 2004 UTC (20 years, 1 month ago) by gezelter
File size: 2111 byte(s)
Log Message:
More work on Fortran side of error handler

File Contents

# User Rev Content
1 mmeineke 626 module notifyCutoffs
2    
3     use definitions
4     use do_Forces, only: setRlistDF
5     use reaction_field, only: setCutoffsRF
6     use lj, only: setCutoffLJ
7 chuckv 653 use eam, only: setCutoffEAM
8 gezelter 1150 use switcheroo, only: set_switch
9 gezelter 1239 use status
10 mmeineke 626 implicit none
11    
12     PRIVATE
13 gezelter 1150
14 gezelter 1239 character(len = statusMsgSize) :: errMsg
15    
16 gezelter 1150 #define __FORTRAN90
17     #include "fSwitchingFunction.h"
18 gezelter 1239
19     public::cutoffNotify
20 mmeineke 626
21 gezelter 1239 contains
22    
23     subroutine cutoffNotify( this_rcut, this_rsw, this_rlist )
24 mmeineke 626
25 gezelter 1239 real(kind=dp), intent(in) :: this_rcut, this_rsw, this_rlist
26    
27     real(kind=dp) :: rsw, rcut, rlist
28     integer :: localError
29     logical :: do_shift
30    
31     rcut = this_rcut
32     rsw = this_rsw
33     rlist = this_rlist
34    
35     if (rcut .lt. rsw) then
36    
37     write(errMsg, *) 'cutoffRadius is ', rcut, newline // tab, &
38     'but switchingRadius is set larger at ', rsw , newline // tab, &
39     'That is probably not what you wanted to do!'
40 gezelter 1233
41 gezelter 1239 call handleWarning("cutoffNotify", errMsg)
42 gezelter 1233
43 gezelter 845 endif
44 gezelter 1239
45 gezelter 1154 if (rlist .lt. rcut) then
46 gezelter 1233
47 gezelter 1239 write(errMsg, *) 'neighborListRadius is ', rlist, newline &
48     // tab, 'but cutoffRadius is set larger at ', rcut , newline &
49     // tab, 'That is probably a programming error!'
50    
51     call handleWarning("cutoffNotify", errMsg)
52    
53 gezelter 1154 endif
54 gezelter 1239
55 gezelter 1160 do_shift = .false.
56     if (abs(rcut-rsw) .lt. 0.0001) then
57 gezelter 1233
58 gezelter 1239 write(errMsg, *) 'cutoffRadius and switchingRadius', newline &
59     // tab, 'are set to the same value. OOPSE will use', newline &
60     // tab, 'shifted Lennard-Jones potentials instead of', newline &
61     // tab, 'switching functions.'
62 gezelter 1233
63 gezelter 1239 call handleInfo("cutoffNotify", errMsg)
64    
65 gezelter 1160 do_shift = .true.
66 gezelter 1233
67 gezelter 1160 endif
68 gezelter 1154
69 mmeineke 626 call setRlistDF( rlist )
70 gezelter 1154 call setCutoffsRF( rcut, rsw )
71 gezelter 1160 call setCutoffLJ( rcut, do_shift, localError )
72 gezelter 1154 call setCutoffEAM( rcut, localError)
73     call set_switch(GROUP_SWITCH, rsw, rcut)
74 mmeineke 626
75     end subroutine cutoffNotify
76    
77     end module notifyCutoffs