Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PLAG_ReadDisPartInitSection.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: read in user input related to discrete particle module
26 ! for initialization phase.
27 !
28 ! Description: none.
29 !
30 ! Input: user input file.
31 !
32 ! Output: regions = number of initial particles, their positions
33 ! diameters and temperatures.
34 !
35 ! Notes: none.
36 !
37 !******************************************************************************
38 !
39 ! $Id: PLAG_ReadDisPartInitSection.F90,v 1.9 2008/12/06 08:44:35 mtcampbe Exp $
40 !
41 ! Copyright: (c) 2004 by the University of Illinois
42 !
43 !******************************************************************************
44 
45 SUBROUTINE plag_readdispartinitsection( regions )
46 
47  USE moddatatypes
48  USE moddatastruct, ONLY : t_region
49  USE modglobal, ONLY : t_global
50  USE modpartlag, ONLY : t_plag_input
52  USE moderror
53  USE modparameters
55  IMPLICIT NONE
56 
57 ! ******************************************************************************
58 ! Declarations and definitions
59 ! ******************************************************************************
60 
61 ! ==============================================================================
62 ! Arguments
63 ! ==============================================================================
64 
65  TYPE(t_region), POINTER :: regions(:)
66 
67 ! ==============================================================================
68 ! Local variables
69 ! ==============================================================================
70 
71  INTEGER, PARAMETER :: nvals_max = 2
72 
73  CHARACTER(CHRLEN) :: rcsidentstring
74  CHARACTER(15) :: keysinit(nvals_max),keysinitmat
75 
76  INTEGER :: brbeg,brend,errorflag,ireg,irow1,irow2,ival,ncols,&
77  npclsini,nregions,nrows,nvals
78 
79  LOGICAL :: definedinit(nvals_max),definedinitmat
80 
81  REAL(RFREAL) :: valsinit(nvals_max)
82  REAL(RFREAL), POINTER, DIMENSION(:,:) :: valsinitmat
83 
84  TYPE(t_global), POINTER :: global
85 
86 ! ******************************************************************************
87 ! Start
88 ! ******************************************************************************
89 
90  rcsidentstring = '$RCSfile: PLAG_ReadDisPartInitSection.F90,v $ $Revision: 1.9 $'
91 
92  global => regions(1)%global
93 
94  CALL registerfunction( global, 'PLAG_ReadDisPartInitSection',&
95  'PLAG_ReadDisPartInitSection.F90' )
96 
97 ! ******************************************************************************
98 ! Initialize
99 ! ******************************************************************************
100 
101  nregions = global%nRegions
102 
103 #ifdef RFLO
104  brbeg = 1
105  brend = nregions
106 #endif
107 #ifdef RFLU
108  brbeg = lbound(regions,1)
109  brend = ubound(regions,1)
110 #endif
111 
112 ! ******************************************************************************
113 ! Read section pertinent to initial solution flag
114 ! ******************************************************************************
115 
116  nvals = nvals_max
117  definedinit(:) = .false.
118  keysinit(1) = 'FLAG'
119  keysinit(2) = 'NPCLSRAND'
120  valsinit(:) = 0.0_rfreal
121 
122 #ifdef RFLO
123  CALL readregionsection( global,if_input,nvals,keysinit,valsinit, &
124  brbeg,brend,definedinit )
125 
126  IF (definedinit(1) .EQV. .true.) &
127  global%initPlagFlag = nint(valsinit(1))
128 
129  IF (definedinit(2) .EQV. .true.) &
130  regions(brbeg:brend)%plagInput%nPclsIni = nint(valsinit(2))
131 #endif
132 
133 #ifdef RFLU
134  CALL readsection(global,if_input,nvals,keysinit,valsinit,definedinit )
135 
136  IF ( definedinit(1) .EQV. .false. ) THEN
137  CALL errorstop(global,err_val_undefined,__line__,'DISPARTINIT-FLAG')
138  ELSE
139  IF ( nint(valsinit(1)) == plag_init_fromscratch ) THEN
140  global%initPlagFlag = plag_init_fromscratch
141  ELSE IF ( nint(valsinit(1)) == plag_init_fromfile ) THEN
142  global%initPlagFlag = plag_init_fromfile
143  ELSE IF ( nint(valsinit(1)) == plag_init_fromhardcode ) THEN
144  global%initPlagFlag = plag_init_fromhardcode
145  ELSE IF ( nint(valsinit(1)) == plag_init_fromrandomstate ) THEN
146  global%initPlagFlag = plag_init_fromrandomstate
147  ELSE
148  CALL errorstop(global,err_reached_default,__line__)
149  END IF ! valsInit
150  END IF ! defined
151 
152  IF ( ( nint(valsinit(1)) == plag_init_fromrandomstate ) .AND. &
153  ( definedinit(2) .EQV. .false. ) ) THEN
154  CALL errorstop(global,err_val_undefined,__line__,'DISPARTINIT-NPCLSRAND')
155  ELSE
156  IF ( nint(valsinit(2)) >= 0 ) THEN
157  regions(brbeg:brend)%plagInput%nPclsIni = nint(valsinit(2))
158  ELSE
159  CALL errorstop(global,err_reached_default,__line__)
160  END IF ! valsInit
161  END IF ! iValInit
162 #endif
163 
164 ! ******************************************************************************
165 ! Read section pertinent to particle positions, diameters and temperature
166 ! ******************************************************************************
167 
168  SELECT CASE ( nint(valsinit(1)) )
169 
170 ! ==============================================================================
171 ! PLAG_INIT_FROMSCRATCH:
172 ! Read section pertinent to scratch initialization
173 ! ==============================================================================
174 
175  CASE ( plag_init_fromscratch )
176  definedinitmat = .false.
177  keysinitmat = 'NUMBER'
178  ncols = 9
179 
180  CALL readlistsection( global, if_input,keysinitmat,ncols,nrows, &
181  valsinitmat,definedinitmat )
182 
183 ! ==============================================================================
184 ! Always load number of particles for scratch field
185 ! ==============================================================================
186 
187  regions(brbeg:brend)%plagInput%nPclsIni = nrows
188 
189  IF (definedinitmat .EQV. .true.) THEN
190 
191 ! ==============================================================================
192 ! Allocate arrays
193 ! ==============================================================================
194 
195  DO ireg = brbeg,brend
196  ALLOCATE( regions(ireg)%plagInput%iniPosX(nrows),stat=errorflag )
197  global%error = errorflag
198  IF (global%error /= err_none) THEN
199  CALL errorstop( global, err_allocate,__line__ , &
200  'regions%plagInput%iniPosX' )
201  END IF ! global%error
202 
203  ALLOCATE( regions(ireg)%plagInput%iniPosY(nrows),stat=errorflag )
204  global%error = errorflag
205  IF (global%error /= err_none) THEN
206  CALL errorstop( global, err_allocate,__line__ , &
207  'regions%plagInput%iniPosY' )
208  END IF ! global%error
209 
210  ALLOCATE( regions(ireg)%plagInput%iniPosZ(nrows),stat=errorflag )
211  global%error = errorflag
212  IF (global%error /= err_none) THEN
213  CALL errorstop( global, err_allocate,__line__ , &
214  'regions%plagInput%iniPosZ' )
215  END IF ! global%error
216 
217  ALLOCATE( regions(ireg)%plagInput%iniDiam(nrows),stat=errorflag )
218  global%error = errorflag
219  IF (global%error /= err_none) THEN
220  CALL errorstop( global, err_allocate,__line__ ,&
221  'regions%plagInput%iniDiam' )
222  END IF ! global%error
223 
224  ALLOCATE( regions(ireg)%plagInput%iniTemp(nrows),stat=errorflag )
225  global%error = errorflag
226  IF (global%error /= err_none) THEN
227  CALL errorstop( global, err_allocate,__line__ , &
228  'regions%plagInput%iniTemp' )
229  END IF ! global%error
230 
231  ALLOCATE( regions(ireg)%plagInput%iniSpLoad(nrows),stat=errorflag )
232  global%error = errorflag
233  IF (global%error /= err_none) THEN
234  CALL errorstop( global, err_allocate,__line__ , &
235  'regions%plagInput%iniSpLoad' )
236  END IF ! global%error
237 
238  ALLOCATE( regions(ireg)%plagInput%iniVelX(nrows),stat=errorflag )
239  global%error = errorflag
240  IF (global%error /= err_none) THEN
241  CALL errorstop( global, err_allocate,__line__ , &
242  'regions%plagInput%iniVelX' )
243  END IF ! global%error
244 
245  ALLOCATE( regions(ireg)%plagInput%iniVelY(nrows),stat=errorflag )
246  global%error = errorflag
247  IF (global%error /= err_none) THEN
248  CALL errorstop( global, err_allocate,__line__ , &
249  'regions%plagInput%iniVelY' )
250  END IF ! global%error
251 
252  ALLOCATE( regions(ireg)%plagInput%iniVelZ(nrows),stat=errorflag )
253  global%error = errorflag
254  IF (global%error /= err_none) THEN
255  CALL errorstop( global, err_allocate,__line__ , &
256  'regions%plagInput%iniVelZ' )
257  END IF ! global%error
258  END DO !iReg
259 
260 ! ==============================================================================
261 ! Initialize arrays
262 ! ==============================================================================
263 
264  DO ireg = brbeg,brend
265  regions(ireg)%plagInput%iniPosX = REAL(crazy_value_int,kind=rfreal)
266  regions(ireg)%plagInput%iniPosY = REAL(crazy_value_int,kind=rfreal)
267  regions(ireg)%plagInput%iniPosZ = REAL(crazy_value_int,kind=rfreal)
268  regions(ireg)%plagInput%iniDiam = REAL(crazy_value_int,kind=rfreal)
269  regions(ireg)%plagInput%iniTemp = REAL(crazy_value_int,kind=rfreal)
270  regions(ireg)%plagInput%iniSpLoad = REAL(crazy_value_int,kind=rfreal)
271  regions(ireg)%plagInput%iniVelX = REAL(crazy_value_int,kind=rfreal)
272  regions(ireg)%plagInput%iniVelY = REAL(crazy_value_int,kind=rfreal)
273  regions(ireg)%plagInput%iniVelZ = REAL(crazy_value_int,kind=rfreal)
274  END DO ! iReg
275 
276 ! ==============================================================================
277 ! Load arrays
278 ! ==============================================================================
279 
280  DO ireg= brbeg,brend
281  npclsini = regions(ireg)%plagInput%nPclsIni
282 
283  DO ival=1, npclsini
284  regions(ireg)%plagInput%iniPosX(ival) = valsinitmat(ival,1)
285  regions(ireg)%plagInput%iniPosY(ival) = valsinitmat(ival,2)
286  regions(ireg)%plagInput%iniPosZ(ival) = valsinitmat(ival,3)
287  regions(ireg)%plagInput%iniDiam(ival) = abs(valsinitmat(ival,4))
288  regions(ireg)%plagInput%iniTemp(ival) = abs(valsinitmat(ival,5))
289  regions(ireg)%plagInput%iniSpLoad(ival) = abs(valsinitmat(ival,6))
290  regions(ireg)%plagInput%iniVelX(ival) = valsinitmat(ival,7)
291  regions(ireg)%plagInput%iniVelY(ival) = valsinitmat(ival,8)
292  regions(ireg)%plagInput%iniVelZ(ival) = valsinitmat(ival,9)
293  ENDDO ! iVal
294  ENDDO ! iReg
295  ENDIF ! definedInitMat
296 
297 ! ******************************************************************************
298 ! PLAG_INIT_FROMRANDOM:
299 ! Read section pertinent to random state initialization
300 ! ******************************************************************************
301 
302  CASE ( plag_init_fromrandomstate )
303  definedinitmat = .false.
304  keysinitmat = 'NUMBER'
305  ncols = 9
306 
307  CALL readlistsection( global, if_input,keysinitmat,ncols,nrows, &
308  valsinitmat,definedinitmat )
309 
310  IF (definedinitmat .EQV. .true.) THEN
311 
312  IF ( nrows /= 2 ) THEN
313  CALL errorstop(global,err_val_undefined,__line__,'DISPARTINIT-Random nRows')
314  ENDIF ! nRows
315 
316 ! ==============================================================================
317 ! Initialize arrays
318 ! ==============================================================================
319 
320  DO ireg = brbeg,brend
321  regions(ireg)%plagInput%iniRandDiamMax = REAL(crazy_value_int,kind=rfreal)
322  regions(ireg)%plagInput%iniRandDiamMin = REAL(crazy_value_int,kind=rfreal)
323  regions(ireg)%plagInput%iniRandTempMax = REAL(crazy_value_int,kind=rfreal)
324  regions(ireg)%plagInput%iniRandTempMin = REAL(crazy_value_int,kind=rfreal)
325  regions(ireg)%plagInput%iniRandSploadMax = REAL(crazy_value_int,kind=rfreal)
326  regions(ireg)%plagInput%iniRandSploadMin = REAL(crazy_value_int,kind=rfreal)
327  regions(ireg)%plagInput%iniRandXMax = REAL(crazy_value_int,kind=rfreal)
328  regions(ireg)%plagInput%iniRandXMin = REAL(crazy_value_int,kind=rfreal)
329  regions(ireg)%plagInput%iniRandYMax = REAL(crazy_value_int,kind=rfreal)
330  regions(ireg)%plagInput%iniRandYMin = REAL(crazy_value_int,kind=rfreal)
331  regions(ireg)%plagInput%iniRandZMax = REAL(crazy_value_int,kind=rfreal)
332  regions(ireg)%plagInput%iniRandZMin = REAL(crazy_value_int,kind=rfreal)
333  regions(ireg)%plagInput%iniRandUMax = REAL(crazy_value_int,kind=rfreal)
334  regions(ireg)%plagInput%iniRandUMin = REAL(crazy_value_int,kind=rfreal)
335  regions(ireg)%plagInput%iniRandVMax = REAL(crazy_value_int,kind=rfreal)
336  regions(ireg)%plagInput%iniRandVMin = REAL(crazy_value_int,kind=rfreal)
337  regions(ireg)%plagInput%iniRandWMax = REAL(crazy_value_int,kind=rfreal)
338  regions(ireg)%plagInput%iniRandWMin = REAL(crazy_value_int,kind=rfreal)
339  END DO ! iReg
340 
341 ! ==============================================================================
342 ! Load arrays
343 ! First row contains minimum values
344 ! Second row contains maximum values
345 ! ==============================================================================
346 
347  irow1 = 1
348  irow2 = 2
349 
350  DO ireg= brbeg,brend
351  regions(ireg)%plagInput%iniRandXMin = valsinitmat(irow1,1)
352  regions(ireg)%plagInput%iniRandYMin = valsinitmat(irow1,2)
353  regions(ireg)%plagInput%iniRandZMin = valsinitmat(irow1,3)
354  regions(ireg)%plagInput%iniRandDiamMin = abs(valsinitmat(irow1,4))
355  regions(ireg)%plagInput%iniRandTempMin = abs(valsinitmat(irow1,5))
356  regions(ireg)%plagInput%iniRandSploadMin = abs(valsinitmat(irow1,6))
357  regions(ireg)%plagInput%iniRandUMin = valsinitmat(irow1,7)
358  regions(ireg)%plagInput%iniRandVMin = valsinitmat(irow1,8)
359  regions(ireg)%plagInput%iniRandWMin = valsinitmat(irow1,9)
360  regions(ireg)%plagInput%iniRandXMax = valsinitmat(irow2,1)
361  regions(ireg)%plagInput%iniRandYMax = valsinitmat(irow2,2)
362  regions(ireg)%plagInput%iniRandZMax = valsinitmat(irow2,3)
363  regions(ireg)%plagInput%iniRandDiamMax = abs(valsinitmat(irow2,4))
364  regions(ireg)%plagInput%iniRandTempMax = abs(valsinitmat(irow2,5))
365  regions(ireg)%plagInput%iniRandSploadMax = abs(valsinitmat(irow2,6))
366  regions(ireg)%plagInput%iniRandUMax = valsinitmat(irow2,7)
367  regions(ireg)%plagInput%iniRandVMax = valsinitmat(irow2,8)
368  regions(ireg)%plagInput%iniRandWMax = valsinitmat(irow2,9)
369  ENDDO ! iReg
370 
371  ELSE
372  CALL errorstop(global,err_missing_value,__line__)
373 
374  ENDIF ! definedInitMat
375 
376  END SELECT ! valsInit
377 
378 ! ******************************************************************************
379 ! Deallocate pointer array for non-null nRows
380 ! ******************************************************************************
381 
382  IF (nrows > 0) THEN
383  DEALLOCATE( valsinitmat, stat=errorflag )
384  global%error = errorflag
385  IF (global%error /= err_none) THEN
386  CALL errorstop( global, err_deallocate,__line__ ,'valsInitMat' )
387  END IF ! global%error
388  ENDIF ! nRows
389 
390 ! ******************************************************************************
391 ! End
392 ! ******************************************************************************
393 
394  CALL deregisterfunction( global )
395 
396 END SUBROUTINE plag_readdispartinitsection
397 
398 !******************************************************************************
399 !
400 ! RCS Revision history:
401 !
402 ! $Log: PLAG_ReadDisPartInitSection.F90,v $
403 ! Revision 1.9 2008/12/06 08:44:35 mtcampbe
404 ! Updated license.
405 !
406 ! Revision 1.8 2008/11/19 22:17:48 mtcampbe
407 ! Added Illinois Open Source License/Copyright
408 !
409 ! Revision 1.7 2006/10/26 14:58:51 fnajjar
410 ! Added initial random min-max velocities with proper initialization
411 !
412 ! Revision 1.6 2006/07/17 15:50:17 fnajjar
413 ! Removed ABS from the x, y and z coordinate extents
414 !
415 ! Revision 1.5 2006/07/15 21:53:54 fnajjar
416 ! Added min-max extents for x-y-z coordinates for random field initialization
417 !
418 ! Revision 1.4 2006/04/07 15:19:24 haselbac
419 ! Removed tabs
420 !
421 ! Revision 1.3 2005/12/01 18:39:54 fnajjar
422 ! Added error trap for missing input value and set nPclsIni to nRows when initializing from scratch
423 !
424 ! Revision 1.2 2005/03/31 20:25:59 fnajjar
425 ! Added initial particle velocities for scratch solution
426 !
427 ! Revision 1.1 2004/12/01 20:58:03 fnajjar
428 ! Initial revision after changing case
429 !
430 ! Revision 1.7 2004/11/06 18:47:48 fnajjar
431 ! Bug fix: deallocated valsInitMat array for non-zero nRows
432 !
433 ! Revision 1.6 2004/10/11 22:12:23 haselbac
434 ! Bug fix
435 !
436 ! Revision 1.5 2004/10/11 19:38:48 fnajjar
437 ! Renamed ininPlag to nPclsIni to follow naming convention
438 !
439 ! Revision 1.4 2004/10/09 16:39:05 fnajjar
440 ! Streamlined routine and included reading variables for random state initialization
441 !
442 ! Revision 1.3 2004/08/23 20:09:47 fnajjar
443 ! Removed ABS from iniPos to allow negative positions
444 !
445 ! Revision 1.2 2004/08/20 23:35:02 fnajjar
446 ! Moved deallocation inside definedInitMat IF statement for null ininPlag
447 !
448 ! Revision 1.1 2004/08/20 23:29:24 fnajjar
449 ! Initial import of Plag prep tool
450 !
451 !******************************************************************************
452 
453 
454 
455 
456 
457 
458 
subroutine plag_readdispartinitsection(regions)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine readlistsection(global, fileID, key, nCols, nRows, vals, defined)
**********************************************************************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 brbeg
subroutine readsection(global, fileID, nvals, keys, vals, defined)
subroutine readregionsection(global, fileID, nvals, keys, vals, brbeg, brend, defined)
**********************************************************************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 USE ModDataTypes USE nvals
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469