ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE_old/src/mdtools/libmdCode/simulation_module.F90
Revision: 312
Committed: Tue Mar 11 17:46:18 2003 UTC (21 years, 4 months ago) by gezelter
File size: 3890 byte(s)
Log Message:
Bunch o' stuff, particularly the vector_class.F90 module

File Contents

# Content
1 !! Fortran interface to C entry plug.
2
3 module simulation
4 use definitions, ONLY :dp
5 #ifdef IS_MPI
6 use mpiSimulation
7 #endif
8
9 implicit none
10 PRIVATE
11
12 #define __FORTRAN90
13 #include "fSimulation.h"
14
15 type (simtype), public :: thisSim
16
17 logical :: setSim = .false.
18
19 integer,public :: natoms
20
21 public :: getBox
22 public :: getRcut
23 public :: getRlist
24 public :: getRrf
25 public :: getRt
26 public :: getNlocal
27 public :: setSimulation
28 public :: isEnsemble
29 public :: isPBC
30 public :: getStringLen
31 public :: returnMixingRules
32 public :: doStress
33
34 ! public :: setRcut
35 interface getBox
36 module procedure getBox_3d
37 module procedure getBox_dim
38 end interface
39
40 contains
41
42 subroutine setSimulation(setThisSim,error)
43 type (simtype) :: setThisSim
44 integer :: error
45 integer :: alloc_stat
46
47 error = 0
48 setSim = .true.
49 ! copy C struct into fortran type
50 thisSim = setThisSim
51 end subroutine setSimulation
52
53 function getNparticles() result(nparticles)
54 integer :: nparticles
55 nparticles = thisSim%nLRparticles
56 end function getNparticles
57
58 subroutine change_box_size(new_box_size)
59 real(kind=dp), dimension(3) :: new_box_size
60 thisSim%box = new_box_size
61 end subroutine change_box_size
62
63 function getBox_3d() result(thisBox)
64 real( kind = dp ), dimension(3) :: thisBox
65 thisBox = thisSim%box
66 end function getBox_3d
67
68 function getBox_dim(dim) result(thisBox)
69 integer, intent(in) :: dim
70 real( kind = dp ) :: thisBox
71
72 thisBox = thisSim%box(dim)
73 end function getBox_dim
74
75 subroutine getRcut(thisrcut,rcut2,rcut6,status)
76 real( kind = dp ), intent(out) :: thisrcut
77 real( kind = dp ), intent(out), optional :: rcut2
78 real( kind = dp ), intent(out), optional :: rcut6
79 integer, optional :: status
80
81 if (present(status)) status = 0
82
83 if (.not.setSim ) then
84 if (present(status)) status = -1
85 return
86 end if
87
88 thisrcut = thisSim%rcut
89 if(present(rcut2)) rcut2 = thisSim%rcutsq
90 if(present(rcut6)) rcut6 = thisSim%rcut6
91 end subroutine getRcut
92
93 subroutine getRlist(thisrlist,rlist2,status)
94 real( kind = dp ), intent(out) :: thisrlist
95 real( kind = dp ), intent(out), optional :: rlist2
96
97 integer, optional :: status
98
99 if (present(status)) status = 0
100
101 if (.not.setSim ) then
102 if (present(status)) status = -1
103 return
104 end if
105
106 thisrlist = thisSim%rlist
107 if(present(rlist2)) rlist2 = thisSim%rlistsq
108 end subroutine getRlist
109
110 function getRrf() result(rrf)
111 real( kind = dp ) :: rrf
112 rrf = thisSim%rrf
113 end function getRrf
114
115 function getRt() result(rt)
116 real( kind = dp ) :: rt
117 rt = thisSim%rt
118 end function getRt
119
120 pure function getNlocal() result(nlocal)
121 integer :: nlocal
122 nlocal = thisSim%nLRparticles
123 end function getNlocal
124
125 function doStress() result(do_stress)
126 logical :: do_stress
127 do_stress = thisSim%do_stress
128 end function doStress
129
130 function isEnsemble(this_ensemble) result(is_this_ensemble)
131 character(len = *) :: this_ensemble
132 logical :: is_this_ensemble
133 is_this_ensemble = .false.
134 if (this_ensemble == thisSim%ensemble) is_this_ensemble = .true.
135 end function isEnsemble
136
137 function returnEnsemble() result(thisEnsemble)
138 character (len = len(thisSim%ensemble)) :: thisEnsemble
139 thisEnsemble = thisSim%ensemble
140 end function returnEnsemble
141
142 function returnMixingRules() result(thisMixingRule)
143 character (len = len(thisSim%ensemble)) :: thisMixingRule
144 thisMixingRule = thisSim%MixingRule
145 end function returnMixingRules
146
147 function isPBC() result(PBCset)
148 logical :: PBCset
149 PBCset = .false.
150 if (thisSim%use_pbc) PBCset = .true.
151 end function isPBC
152
153 pure function getStringLen() result (thislen)
154 integer :: thislen
155 thislen = string_len
156 end function getStringLen
157
158 end module simulation