Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PLAG_AllocateMemory.F90
Go to the documentation of this file.
1 ! *********************************************************************
2 ! * Rocstar Simulation Suite *
3 ! * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4 ! * *
5 ! * Illinois Rocstar LLC *
6 ! * Champaign, IL *
7 ! * www.illinoisrocstar.com *
8 ! * sales@illinoisrocstar.com *
9 ! * *
10 ! * License: See LICENSE file in top level of distribution package or *
11 ! * http://opensource.org/licenses/NCSA *
12 ! *********************************************************************
13 ! *********************************************************************
14 ! * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15 ! * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16 ! * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17 ! * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18 ! * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19 ! * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20 ! * Arising FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21 ! * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22 ! *********************************************************************
23 !******************************************************************************
24 !
25 ! Purpose: allocate memory for all variables associated with the Lagrangian
26 ! particles (PLAG) for all active regions on current processor.
27 !
28 ! Description: none.
29 !
30 ! Input: region = current region
31 !
32 ! Output: region%plag = plag variables
33 !
34 ! Notes: none.
35 !
36 !******************************************************************************
37 !
38 ! $Id: PLAG_AllocateMemory.F90,v 1.5 2008/12/06 08:44:32 mtcampbe Exp $
39 !
40 ! Copyright: (c) 2002 by the University of Illinois
41 !
42 !******************************************************************************
43 
44 SUBROUTINE plag_allocatememory( region )
45 
46  USE moddatatypes
47  USE moddatastruct, ONLY : t_region, t_level
48  USE modglobal, ONLY : t_global
49  USE modpartlag, ONLY : t_plag, t_plag_input
55  USE moderror
56  USE modparameters
57  USE modmpi
59 
60 #ifdef STATS
63 #endif
64 
65  IMPLICIT NONE
66 
67 #include "Indexing.h"
68 
69 ! ... parameters
70  TYPE(t_region) :: region
71 
72 ! ... loop variables
73  INTEGER :: icont, ilev
74 
75 ! ... local variables
76  CHARACTER(CHRLEN) :: rcsidentstring
77 
78  INTEGER :: errorflag, ibn, idnbeg, idnend, ien, inoff, ijnoff, &
79  jdnbeg, jdnend, kdnbeg, kdnend, naiv, narv, ncont, &
80  ncv, ndv, nev, npclsmax, ntv, maxdisedges
81 
82  TYPE(t_level), POINTER :: plevel
83  TYPE(t_plag), POINTER :: pplag
84  TYPE(t_global), POINTER :: global
85 
86 !******************************************************************************
87 
88  rcsidentstring = '$RCSfile: PLAG_AllocateMemory.F90,v $ $Revision: 1.5 $'
89 
90  global => region%global
91 
92  CALL registerfunction( global, 'PLAG_AllocateMemory',&
93  'PLAG_AllocateMemory.F90' )
94 
95  IF ( global%myProcid == masterproc .AND. &
96  global%verbLevel > verbose_none ) THEN
97  WRITE(stdout,'(A,3X,A)') solver_name,'Allocating memory for PLAG...'
98  END IF ! global%verbLevel
99 
100 ! Set max discrete edges ------------------------------------------------------
101 
102  maxdisedges = region%inrtInput%maxDisEdges
103 
104 ! Loop over all grid levels ---------------------------------------------------
105 
106  DO ilev=1,region%nGridLevels
107 
108  plevel => region%levels(ilev)
109  pplag => region%levels(ilev)%plag
110 
111 ! - Get particle dimensions ---------------------------------------------------
112 
113  npclsmax = region%plagInput%nPclsMax
114  ncont = region%plagInput%nCont
115 
116 ! - Set pointers --------------------------------------------------------------
117 
118  naiv = pplag%nAiv
119  narv = pplag%nArv
120 
121  ncv = pplag%nCv
122  ndv = pplag%nDv
123  ntv = pplag%nTv
124  nev = pplag%nEv
125 
126  IF ( global%myProcid == masterproc .AND. &
127  global%verbLevel > verbose_none ) THEN
128  WRITE(stdout,1015) ' nPclsMax',npclsmax
129  WRITE(stdout,1010) ' nCont ',ncont
130  WRITE(stdout,1010) ' nAiv ',naiv
131  WRITE(stdout,1010) ' nArv ',narv
132  WRITE(stdout,1010) ' nCv ',ncv
133  WRITE(stdout,1010) ' nDv ',ndv
134  WRITE(stdout,1010) ' nTv ',ntv
135  WRITE(stdout,1010) ' nEv ',nev
136  END IF ! global%verbLevel
137 
138 ! - Lagrangian particles variables --------------------------------------------
139 
140  ALLOCATE( pplag%aiv(naiv,npclsmax),stat=errorflag )
141  global%error = errorflag
142  IF (global%error /= err_none) THEN
143  CALL errorstop( global, err_allocate,__line__ ,'pPlag%aiv' )
144  END IF ! global%error
145 
146  ALLOCATE( pplag%arv(narv,npclsmax),stat=errorflag )
147  global%error = errorflag
148  IF (global%error /= err_none) THEN
149  CALL errorstop( global, err_allocate,__line__ ,'pPlag%arv' )
150  END IF ! global%error
151 
152  ALLOCATE( pplag%cv (ncv,npclsmax),stat=errorflag )
153  global%error = errorflag
154  IF (global%error /= err_none) THEN
155  CALL errorstop( global, err_allocate,__line__ ,'pPlag%cv' )
156  END IF ! global%error
157 
158  ALLOCATE( pplag%dv (ndv,npclsmax),stat=errorflag )
159  global%error = errorflag
160  IF (global%error /= err_none) THEN
161  CALL errorstop( global, err_allocate,__line__ ,'pPlag%dv' )
162  END IF ! global%error
163 
164  ALLOCATE( pplag%tv (ntv,npclsmax),stat=errorflag )
165  global%error = errorflag
166  IF (global%error /= err_none) THEN
167  CALL errorstop( global, err_allocate,__line__ ,'pPlag%tv' )
168  END IF ! global%error
169 
170  ALLOCATE( pplag%rhs (ncv,npclsmax),stat=errorflag )
171  global%error = errorflag
172  IF (global%error /= err_none) THEN
173  CALL errorstop( global, err_allocate,__line__ ,'pPlag%rhs' )
174  END IF ! global%error
175 
176  ALLOCATE( pplag%rhsSum(ncv,npclsmax),stat=errorflag )
177  global%error = errorflag
178  IF (global%error /= err_none) THEN
179  CALL errorstop( global, err_allocate,__line__ ,'pPlag%rhsSum' )
180  END IF ! global%error
181 
182  ALLOCATE( pplag%aivOld(naiv,npclsmax),stat=errorflag )
183  global%error = errorflag
184  IF (global%error /= err_none) THEN
185  CALL errorstop( global, err_allocate,__line__ ,'pPlag%aivOld' )
186  END IF ! global%error
187 
188  ALLOCATE( pplag%arvOld(narv,npclsmax),stat=errorflag )
189  global%error = errorflag
190  IF (global%error /= err_none) THEN
191  CALL errorstop( global, err_allocate,__line__ ,'pPlag%arvOld' )
192  END IF ! global%error
193 
194  ALLOCATE( pplag%cvOld (ncv,npclsmax),stat=errorflag )
195  global%error = errorflag
196  IF (global%error /= err_none) THEN
197  CALL errorstop( global, err_allocate,__line__ ,'pPlag%cvOld' )
198  END IF ! global%error
199 
200 ! - Lagrangian particles mass and volume indices ------------------------------
201 
202  ALLOCATE( pplag%cvPlagMass(ncont),stat=errorflag )
203  global%error = errorflag
204  IF (global%error /= err_none) THEN
205  CALL errorstop( global, err_allocate,__line__ ,'pPlag%cvPlagMass' )
206  END IF ! global%error
207 
208  ALLOCATE( pplag%dvPlagVolu(ncont),stat=errorflag )
209  global%error = errorflag
210  IF (global%error /= err_none) THEN
211  CALL errorstop( global, err_allocate,__line__ ,'pPlag%dvPlagVolu' )
212  END IF ! global%error
213 
214  DO icont = 1, ncont
215  pplag%cvPlagMass(icont) = cv_plag_last +icont
216  pplag%dvPlagVolu(icont) = dv_plag_last +icont
217  END DO ! iCont
218 
219 ! - Get dimensions and pointers -----------------------------------------------
220 
221  CALL rflo_getdimensdummynodes( region,ilev,idnbeg,idnend, &
222  jdnbeg,jdnend,kdnbeg,kdnend )
223  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
224 
225  ibn = indijk(idnbeg,jdnbeg,kdnbeg,inoff,ijnoff)
226  ien = indijk(idnend,jdnend,kdnend,inoff,ijnoff)
227 
228 ! - Allocate array for face centroids -----------------------------------------
229 
230  ALLOCATE( pplag%fc(zcoord,kcoord,ibn:ien),stat=errorflag )
231  global%error = errorflag
232  IF (global%error /= err_none) THEN
233  CALL errorstop( global, err_allocate,__line__ ,'pPlag%fc' )
234  END IF ! global%error
235 
236 ! - Allocate array for face vectors -------------------------------------------
237 
238  ALLOCATE( pplag%si(zcoord,ibn:ien),stat=errorflag )
239  global%error = errorflag
240  IF (global%error /= err_none) THEN
241  CALL errorstop( global, err_allocate,__line__ ,'pPlag%si' )
242  END IF ! global%error
243 
244  ALLOCATE( pplag%sj(zcoord,ibn:ien),stat=errorflag )
245  global%error = errorflag
246  IF (global%error /= err_none) THEN
247  CALL errorstop( global, err_allocate,__line__ ,'pPlag%sj' )
248  END IF ! global%error
249 
250  ALLOCATE( pplag%sk(zcoord,ibn:ien),stat=errorflag )
251  global%error = errorflag
252  IF (global%error /= err_none) THEN
253  CALL errorstop( global, err_allocate,__line__ ,'pPlag%sk' )
254  END IF ! global%error
255 
256 ! - Allocate source for INRT ----------------------------------------------------
257 
258 ! CALL PLAG_INRT_AllocMem( region, pPlag )
259 
260  IF ( maxdisedges > 0 ) THEN
261  ALLOCATE( pplag%inrtSources(maxdisedges,npclsmax), stat=errorflag )
262 
263  global%error = errorflag
264  IF (global%error /= err_none) THEN
265  CALL errorstop( global,err_allocate,__line__,'pPlag%inrtSources' )
266  END IF ! global%error
267 
268  ELSE
269  nullify( pplag%inrtSources )
270 
271  END IF ! maxDisEdges
272 
273 ! - Allocate arrays for statistics --------------------------------------------
274 
275 #ifdef STATS
276  IF ( ( global%flowType == flow_unsteady ) .AND. &
277  ( global%doStat == active ) ) THEN
278  CALL plag_createeulerianfield( region, pplag )
279  CALL plag_createstat( region, pplag )
280  END IF ! global%flowType
281 #endif
282 
283  ENDDO ! iLev
284 
285 ! Allocate memory for tiles ---------------------------------------------------
286 
287  CALL plag_allocatememorytile( region )
288 
289 ! Initialize memory -----------------------------------------------------------
290 
291  CALL plag_initmemory( region )
292 
293 ! Initialize tile datastructure -----------------------------------------------
294 
295  CALL plag_injctileinitialize( region )
296 
297 ! finalize
298 
299  CALL deregisterfunction( global )
300 
301 1010 FORMAT(a,' = ',i2)
302 1015 FORMAT(a,' = ',i7)
303 
304 END SUBROUTINE plag_allocatememory
305 
306 !******************************************************************************
307 !
308 ! RCS Revision history:
309 !
310 ! $Log: PLAG_AllocateMemory.F90,v $
311 ! Revision 1.5 2008/12/06 08:44:32 mtcampbe
312 ! Updated license.
313 !
314 ! Revision 1.4 2008/11/19 22:17:45 mtcampbe
315 ! Added Illinois Open Source License/Copyright
316 !
317 ! Revision 1.3 2007/03/06 23:13:13 fnajjar
318 ! Renamed nPclsTot to nPclsMax
319 !
320 ! Revision 1.2 2005/01/08 20:41:38 fnajjar
321 ! Included memory allocation for PLAG statistics
322 !
323 ! Revision 1.1 2004/12/01 20:56:50 fnajjar
324 ! Initial revision after changing case
325 !
326 ! Revision 1.7 2004/07/26 17:05:51 fnajjar
327 ! moved allocation of inrtSources into Rocpart
328 !
329 ! Revision 1.6 2004/03/01 21:57:54 fnajjar
330 ! Removed definitions of nAiv, nCv, nDv, nTv since now set in PLAG_derivedInputValues
331 !
332 ! Revision 1.5 2003/11/03 21:19:29 fnajjar
333 ! Added face vectors to PLAG infrastructure
334 !
335 ! Revision 1.4 2003/05/27 19:14:16 fnajjar
336 ! Removed distPartBurning and all pertinent LOGICAL datastructure
337 !
338 ! Revision 1.3 2003/05/15 02:57:04 jblazek
339 ! Inlined index function.
340 !
341 ! Revision 1.2 2003/03/04 22:12:35 jferry
342 ! Initial import of Rocinteract
343 !
344 ! Revision 1.1 2002/10/25 14:13:59 f-najjar
345 ! Initial Import of Rocpart
346 !
347 !
348 !******************************************************************************
349 
350 
351 
352 
353 
354 
355 
subroutine, public plag_createstat(pRegion, pPlag)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine plag_allocatememory(region)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jdnbeg
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE idnend
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jdnend
subroutine plag_injctileinitialize(region)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE idnbeg
subroutine plag_allocatememorytile(region)
subroutine rflo_getdimensdummynodes(region, iLev, idnbeg, idnend, jdnbeg, jdnend, kdnbeg, kdnend)
subroutine plag_initmemory(region)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE kdnbeg
RT a() const
Definition: Line_2.h:140
subroutine, public plag_createeulerianfield(pRegion, pPlag)