ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/notifyCutoffs.F90
Revision: 1233
Committed: Fri Jun 4 02:38:23 2004 UTC (20 years, 1 month ago) by gezelter
File size: 2536 byte(s)
Log Message:
Config changes for fortran access to SimError

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 mmeineke 626 implicit none
10    
11     PRIVATE
12 gezelter 1150
13     #define __FORTRAN90
14     #include "fSwitchingFunction.h"
15 gezelter 1233 #include "simError.h"
16 mmeineke 626
17     public::cutoffNotify
18    
19     contains
20    
21 gezelter 1154 subroutine cutoffNotify( this_rcut, this_rsw, this_rlist )
22 mmeineke 626
23 gezelter 1154 real(kind=dp), intent(in) :: this_rcut, this_rsw, this_rlist
24 mmeineke 626
25 gezelter 1154 real(kind=dp) :: rsw, rcut, rlist
26 mmeineke 626 integer :: localError
27 gezelter 1160 logical :: do_shift
28 gezelter 845
29 mmeineke 626 rcut = this_rcut
30 gezelter 1154 rsw = this_rsw
31 mmeineke 626 rlist = this_rlist
32    
33 gezelter 1154 if (rcut .lt. rsw) then
34 gezelter 1233
35     write(painCave%errMsg, *) 'cutoffRadius is ', rcut, &
36     achar(10) // achar(9), &
37     'but switchingRadius is set larger at ', rsw , &
38     achar(10) // achar(9) , &
39     'That is probably not what you wanted to do!', &
40     achar(10) // achar(0)
41    
42     painCave%severity = OOPSE_WARNING
43     painCave%isFatal = .false.
44     call c_simError(painCave)
45    
46 gezelter 845 endif
47 mmeineke 626
48 gezelter 1154 if (rlist .lt. rcut) then
49 gezelter 1233
50     write(painCave%errMsg, *) 'neighborListRadius is ', rlist, &
51     achar(10) // achar(9), &
52     'but cutoffRadius is set larger at ', rcut , &
53     achar(10) // achar(9) , &
54     'That is probably a programming error!', &
55     achar(10) // achar(0)
56     painCave%severity = OOPSE_WARNING
57     painCave%isFatal = .false.
58     call c_simError(painCave)
59    
60 gezelter 1154 endif
61 gezelter 1160
62     do_shift = .false.
63     if (abs(rcut-rsw) .lt. 0.0001) then
64 gezelter 1233
65     write(painCave%errMsg,*) 'cutoffRadius and switchingRadius', &
66     achar(10) // achar(9), &
67     'are set to the same value. OOPSE will use', &
68     achar(10) // achar(9), &
69     'shifted Lennard-Jones potentials instead of', &
70     achar(10) // achar(9), &
71     'switching functions.', &
72     achar(10) // achar(0)
73     painCave%severity = OOPSE_INFO
74     painCave%isFatal = .false.
75     call c_simError(painCave)
76    
77 gezelter 1160 do_shift = .true.
78 gezelter 1233
79 gezelter 1160 endif
80 gezelter 1154
81 mmeineke 626 call setRlistDF( rlist )
82 gezelter 1154 call setCutoffsRF( rcut, rsw )
83 gezelter 1160 call setCutoffLJ( rcut, do_shift, localError )
84 gezelter 1154 call setCutoffEAM( rcut, localError)
85     call set_switch(GROUP_SWITCH, rsw, rcut)
86 mmeineke 626
87     end subroutine cutoffNotify
88    
89     end module notifyCutoffs