ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/src/UseTheForce/DarkSide/force_globals.F90
Revision: 1490
Committed: Fri Sep 24 04:16:43 2004 UTC (19 years, 9 months ago) by gezelter
File size: 7397 byte(s)
Log Message:
Import of OOPSE v. 2.0

File Contents

# User Rev Content
1 gezelter 1490 ! Fortran interface to C entry plug.
2    
3     module force_globals
4     use definitions
5     #ifdef IS_MPI
6     use mpiSimulation
7     #endif
8    
9     implicit none
10     PRIVATE
11    
12     logical, save :: force_globals_initialized = .false.
13    
14     #ifdef IS_MPI
15     real( kind = dp ), allocatable, dimension(:,:), public :: q_Row
16     real( kind = dp ), allocatable, dimension(:,:), public :: q_Col
17     real( kind = dp ), allocatable, dimension(:,:), public :: q_group_Row
18     real( kind = dp ), allocatable, dimension(:,:), public :: q_group_Col
19     real( kind = dp ), allocatable, dimension(:,:), public :: u_l_Row
20     real( kind = dp ), allocatable, dimension(:,:), public :: u_l_Col
21     real( kind = dp ), allocatable, dimension(:,:), public :: A_Row
22     real( kind = dp ), allocatable, dimension(:,:), public :: A_Col
23    
24     real( kind = dp ), allocatable, dimension(:), public :: pot_Row
25     real( kind = dp ), allocatable, dimension(:), public :: pot_Col
26     real( kind = dp ), allocatable, dimension(:), public :: pot_Temp
27     real( kind = dp ), allocatable, dimension(:,:), public :: f_Row
28     real( kind = dp ), allocatable, dimension(:,:), public :: f_Col
29     real( kind = dp ), allocatable, dimension(:,:), public :: f_Temp
30     real( kind = dp ), allocatable, dimension(:,:), public :: t_Row
31     real( kind = dp ), allocatable, dimension(:,:), public :: t_Col
32     real( kind = dp ), allocatable, dimension(:,:), public :: t_Temp
33     real( kind = dp ), allocatable, dimension(:,:), public :: rf_Row
34     real( kind = dp ), allocatable, dimension(:,:), public :: rf_Col
35     real( kind = dp ), allocatable, dimension(:,:), public :: rf_Temp
36    
37     integer, allocatable, dimension(:), public :: atid_Row
38     integer, allocatable, dimension(:), public :: atid_Col
39     #endif
40    
41     integer, allocatable, dimension(:), public :: atid
42    
43     real( kind = dp ), allocatable, dimension(:,:), public :: rf
44     real(kind = dp), dimension(9), public :: tau_Temp = 0.0_dp
45     real(kind = dp), public :: virial_Temp = 0.0_dp
46    
47     public :: InitializeForceGlobals
48    
49     contains
50    
51     subroutine InitializeForceGlobals(nlocal, thisStat)
52     integer, intent(out) :: thisStat
53     integer :: nAtomsInRow, nAtomsInCol
54     integer :: nGroupsInRow, nGroupsInCol
55     integer :: nlocal
56     integer :: ndim = 3
57     integer :: alloc_stat
58    
59     thisStat = 0
60    
61     #ifdef IS_MPI
62     nAtomsInRow = getNatomsInRow(plan_atom_row)
63     nAtomsInCol = getNatomsInCol(plan_atom_col)
64     nGroupsInRow = getNgroupsInRow(plan_group_row)
65     nGroupsInCol = getNgroupsInCol(plan_group_col)
66    
67     #endif
68    
69     call FreeForceGlobals()
70    
71     #ifdef IS_MPI
72    
73     allocate(q_Row(ndim,nAtomsInRow),stat=alloc_stat)
74     if (alloc_stat /= 0 ) then
75     thisStat = -1
76     return
77     endif
78    
79     allocate(q_Col(ndim,nAtomsInCol),stat=alloc_stat)
80     if (alloc_stat /= 0 ) then
81     thisStat = -1
82     return
83     endif
84    
85     allocate(q_group_Row(ndim,nGroupsInRow),stat=alloc_stat)
86     if (alloc_stat /= 0 ) then
87     thisStat = -1
88     return
89     endif
90    
91     allocate(q_group_Col(ndim,nGroupsInCol),stat=alloc_stat)
92     if (alloc_stat /= 0 ) then
93     thisStat = -1
94     return
95     endif
96    
97     allocate(u_l_Row(ndim,nAtomsInRow),stat=alloc_stat)
98     if (alloc_stat /= 0 ) then
99     thisStat = -1
100     return
101     endif
102    
103     allocate(u_l_Col(ndim,nAtomsInCol),stat=alloc_stat)
104     if (alloc_stat /= 0 ) then
105     thisStat = -1
106     return
107     endif
108    
109     allocate(A_row(9,nAtomsInRow),stat=alloc_stat)
110     if (alloc_stat /= 0 ) then
111     thisStat = -1
112     return
113     endif
114    
115     allocate(A_Col(9,nAtomsInCol),stat=alloc_stat)
116     if (alloc_stat /= 0 ) then
117     thisStat = -1
118     return
119     endif
120    
121     allocate(pot_row(nAtomsInRow),stat=alloc_stat)
122     if (alloc_stat /= 0 ) then
123     thisStat = -1
124     return
125     endif
126    
127     allocate(pot_Col(nAtomsInCol),stat=alloc_stat)
128     if (alloc_stat /= 0 ) then
129     thisStat = -1
130     return
131     endif
132    
133     allocate(pot_Temp(nlocal),stat=alloc_stat)
134     if (alloc_stat /= 0 ) then
135     thisStat = -1
136     return
137     endif
138    
139     allocate(f_Row(ndim,nAtomsInRow),stat=alloc_stat)
140     if (alloc_stat /= 0 ) then
141     thisStat = -1
142     return
143     endif
144    
145     allocate(f_Col(ndim,nAtomsInCol),stat=alloc_stat)
146     if (alloc_stat /= 0 ) then
147     thisStat = -1
148     return
149     endif
150    
151     allocate(f_Temp(ndim,nlocal),stat=alloc_stat)
152     if (alloc_stat /= 0 ) then
153     thisStat = -1
154     return
155     endif
156    
157     allocate(t_Row(ndim,nAtomsInRow),stat=alloc_stat)
158     if (alloc_stat /= 0 ) then
159     thisStat = -1
160     return
161     endif
162    
163     allocate(t_Col(ndim,nAtomsInCol),stat=alloc_stat)
164     if (alloc_stat /= 0 ) then
165     thisStat = -1
166     return
167     endif
168    
169     allocate(t_temp(ndim,nlocal),stat=alloc_stat)
170     if (alloc_stat /= 0 ) then
171     thisStat = -1
172     return
173     endif
174    
175     allocate(atid(nlocal),stat=alloc_stat)
176     if (alloc_stat /= 0 ) then
177     thisStat = -1
178     return
179     endif
180    
181    
182     allocate(atid_Row(nAtomsInRow),stat=alloc_stat)
183     if (alloc_stat /= 0 ) then
184     thisStat = -1
185     return
186     endif
187    
188     allocate(atid_Col(nAtomsInCol),stat=alloc_stat)
189     if (alloc_stat /= 0 ) then
190     thisStat = -1
191     return
192     endif
193    
194     allocate(rf_Row(ndim,nAtomsInRow),stat=alloc_stat)
195     if (alloc_stat /= 0 ) then
196     thisStat = -1
197     return
198     endif
199    
200     allocate(rf_Col(ndim,nAtomsInCol),stat=alloc_stat)
201     if (alloc_stat /= 0 ) then
202     thisStat = -1
203     return
204     endif
205    
206     allocate(rf_Temp(ndim,nlocal),stat=alloc_stat)
207     if (alloc_stat /= 0 ) then
208     thisStat = -1
209     return
210     endif
211    
212     #else
213    
214     allocate(atid(nlocal),stat=alloc_stat)
215     if (alloc_stat /= 0 ) then
216     thisStat = -1
217     return
218     end if
219    
220     #endif
221    
222     allocate(rf(ndim,nlocal),stat=alloc_stat)
223     if (alloc_stat /= 0 ) then
224     thisStat = -1
225     return
226     endif
227    
228     force_globals_initialized = .true.
229    
230     end subroutine InitializeForceGlobals
231    
232     subroutine FreeForceGlobals()
233    
234     !We free in the opposite order in which we allocate in.
235    
236     if (allocated(rf)) deallocate(rf)
237     #ifdef IS_MPI
238     if (allocated(rf_Temp)) deallocate(rf_Temp)
239     if (allocated(rf_Col)) deallocate(rf_Col)
240     if (allocated(rf_Row)) deallocate(rf_Row)
241     if (allocated(atid_Col)) deallocate(atid_Col)
242     if (allocated(atid_Row)) deallocate(atid_Row)
243     if (allocated(atid)) deallocate(atid)
244     if (allocated(t_Temp)) deallocate(t_Temp)
245     if (allocated(t_Col)) deallocate(t_Col)
246     if (allocated(t_Row)) deallocate(t_Row)
247     if (allocated(f_Temp)) deallocate(f_Temp)
248     if (allocated(f_Col)) deallocate(f_Col)
249     if (allocated(f_Row)) deallocate(f_Row)
250     if (allocated(pot_Temp)) deallocate(pot_Temp)
251     if (allocated(pot_Col)) deallocate(pot_Col)
252     if (allocated(pot_Row)) deallocate(pot_Row)
253     if (allocated(A_Col)) deallocate(A_Col)
254     if (allocated(A_Row)) deallocate(A_Row)
255     if (allocated(u_l_Col)) deallocate(u_l_Col)
256     if (allocated(u_l_Row)) deallocate(u_l_Row)
257     if (allocated(q_group_Col)) deallocate(q_group_Col)
258     if (allocated(q_group_Row)) deallocate(q_group_Row)
259     if (allocated(q_Col)) deallocate(q_Col)
260     if (allocated(q_Row)) deallocate(q_Row)
261     #else
262     if (allocated(atid)) deallocate(atid)
263     #endif
264    
265     end subroutine FreeForceGlobals
266    
267     end module force_globals