ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/simulation_module.F90
(Generate patch)

Comparing trunk/OOPSE/libmdtools/simulation_module.F90 (file contents):
Revision 491 by mmeineke, Fri Apr 11 18:46:37 2003 UTC vs.
Revision 747 by gezelter, Fri Sep 5 21:28:52 2003 UTC

# Line 16 | Line 16 | module simulation
16   #define __FORTRAN90
17   #include "fSimulation.h"
18  
19 <  type (simtype), public :: thisSim
19 >  type (simtype), public, save :: thisSim
20  
21    logical, save :: simulation_setup_complete = .false.
22  
# Line 27 | Line 27 | module simulation
27    integer, allocatable, dimension(:), public :: excludesGlobal
28    integer, allocatable, dimension(:), public :: molMembershipList
29  
30 <  real(kind=dp), save :: rcut2 = 0.0_DP
31 <  real(kind=dp), save :: rcut6 = 0.0_DP
32 <  real(kind=dp), save :: rlist2 = 0.0_DP
33 <  real(kind=dp), public, dimension(3), save :: box
34 <
30 >  real(kind=dp), public, dimension(3,3), save :: Hmat, HmatInv
31 >  logical, public, save :: boxIsOrthorhombic
32    
33    public :: SimulationSetup
34    public :: getNlocal
35    public :: setBox
39  public :: setBox_3d
40  public :: getBox
41  public :: setRcut
42  public :: getRcut
43  public :: getRlist
44  public :: getRrf
45  public :: getRt
36    public :: getDielect
37    public :: SimUsesPBC
38    public :: SimUsesLJ
# Line 54 | Line 44 | module simulation
44    public :: SimRequiresPrepairCalc
45    public :: SimRequiresPostpairCalc
46    public :: SimUsesDirectionalAtoms
57
58  interface getBox
59     module procedure getBox_3d
60     module procedure getBox_1d
61  end interface
47    
63  interface setBox
64     module procedure setBox_3d
65     module procedure setBox_1d
66  end interface
67  
48   contains
49    
50    subroutine SimulationSetup(setThisSim, CnGlobal, CnLocal, c_idents, &
# Line 100 | Line 80 | contains
80      nGlobal = CnGlobal
81  
82      thisSim = setThisSim
103    rcut2 = thisSim%rcut * thisSim%rcut
104    rcut6 = rcut2 * rcut2 * rcut2
105    rlist2 = thisSim%rlist * thisSim%rlist
106    box = thisSim%box
83  
84      nExcludes_Global = CnGlobalExcludes
85      nExcludes_Local = CnLocalExcludes
# Line 166 | Line 142 | contains
142         deallocate(c_idents_Row)
143      endif
144      
145 < #else
145 > #endif
146 >
147 > ! We build the local atid's for both mpi and nonmpi
148      do i = 1, nLocal
149        
150         me = getFirstMatchingElement(atypes, "c_ident", c_idents(i))
151         atid(i) = me
152    
153      enddo
176 #endif
154  
155  
156  
157 +
158      do i = 1, nExcludes_Local
159         excludesLocal(1,i) = CexcludesLocal(1,i)
160         excludesLocal(2,i) = CexcludesLocal(2,i)
# Line 194 | Line 172 | contains
172      
173    end subroutine SimulationSetup
174    
175 <  subroutine setBox_3d(new_box_size)
176 <    real(kind=dp), dimension(3) :: new_box_size
175 >  subroutine setBox(cHmat, cHmatInv, cBoxIsOrthorhombic)
176 >    real(kind=dp), dimension(3,3) :: cHmat, cHmatInv
177 >    integer :: cBoxIsOrthorhombic
178      integer :: smallest, status, i
179 <
180 <    thisSim%box = new_box_size
181 <    box = thisSim%box
182 <
179 >    
180 >    Hmat = cHmat
181 >    HmatInv = cHmatInv
182 >    if (cBoxIsOrthorhombic .eq. 0 ) then
183 >       boxIsOrthorhombic = .false.
184 >    else
185 >       boxIsOrthorhombic = .true.
186 >    endif
187 >    
188      return    
189 <  end subroutine setBox_3d
206 <
207 <  subroutine setBox_1d(dim, new_box_size)
208 <    integer :: dim, status
209 <    real(kind=dp) :: new_box_size
210 <    thisSim%box(dim) = new_box_size
211 <    box(dim) = thisSim%box(dim)
212 <  end subroutine setBox_1d
213 <
214 <  subroutine setRcut(new_rcut, status)
215 <    real(kind = dp) :: new_rcut
216 <    integer :: myStatus, status
217 <    thisSim%rcut = new_rcut
218 <    rcut2 = thisSim%rcut * thisSim%rcut
219 <    rcut6 = rcut2 * rcut2 * rcut2
220 <    status = 0
221 <    return
222 <  end subroutine setRcut
189 >  end subroutine setBox
190  
224  function getBox_3d() result(thisBox)
225    real( kind = dp ), dimension(3) :: thisBox
226    thisBox = thisSim%box
227  end function getBox_3d
228  
229  function getBox_1d(dim) result(thisBox)
230    integer, intent(in) :: dim
231    real( kind = dp ) :: thisBox
232    
233    thisBox = thisSim%box(dim)
234  end function getBox_1d
235    
236  subroutine getRcut(thisrcut,rc2,rc6,status)
237    real( kind = dp ), intent(out) :: thisrcut
238    real( kind = dp ), intent(out), optional :: rc2
239    real( kind = dp ), intent(out), optional :: rc6
240    integer, optional :: status
241
242    if (present(status)) status = 0
243    
244    if (.not.simulation_setup_complete ) then
245       if (present(status)) status = -1
246       return
247    end if
248    
249    thisrcut = thisSim%rcut
250    if(present(rc2)) rc2 = rcut2
251    if(present(rc6)) rc6 = rcut6
252  end subroutine getRcut
253  
254  subroutine getRlist(thisrlist,rl2,status)
255    real( kind = dp ), intent(out) :: thisrlist
256    real( kind = dp ), intent(out), optional :: rl2
257
258    integer, optional :: status
259
260    if (present(status)) status = 0
261
262    if (.not.simulation_setup_complete ) then
263       if (present(status)) status = -1
264       return
265    end if
266    
267    thisrlist = thisSim%rlist
268    if(present(rl2)) rl2 = rlist2
269  end subroutine getRlist
270
271  function getRrf() result(rrf)
272    real( kind = dp ) :: rrf
273    rrf = thisSim%rrf
274    write(*,*) 'getRrf = ', rrf, thisSim%rrf
275  end function getRrf
276  
277  function getRt() result(rt)
278    real( kind = dp ) :: rt
279    rt = thisSim%rt
280  end function getRt
281
191    function getDielect() result(dielect)
192      real( kind = dp ) :: dielect
193      dielect = thisSim%dielect

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines