Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_PrintLocInfo.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: Print out locations of cells (in terms of coordinates and whether
26 ! they are interior or boundary cells)
27 !
28 ! Description: None.
29 !
30 ! Input:
31 ! pRegion Pointer to region
32 ! locUnsorted Unsorted location array
33 ! nLocUnsorted First dimension of locUnsorted array
34 ! locInfoMode Indicating verbosity of output
35 ! outputMode Indicating who may write to screen
36 !
37 ! Output: N/A.
38 !
39 ! Notes:
40 ! 1. Yes yes yes, GOTO is not very nice, but it does the job here...
41 ! 2. Introduced additional argument so that do not get a lot of information
42 ! on cell connectivity and vertex coordinates every time this routine
43 ! is called. The additional information is mainly interesting if running
44 ! with grid motion.
45 ! 3. The additional information on cell connectivity and vertex coordinates
46 ! can be useful because a cell may not a boundary cell, but still contain
47 ! vertices which are on boundary...
48 !
49 ! ******************************************************************************
50 !
51 ! $Id: RFLU_PrintLocInfo.F90,v 1.18 2008/12/06 08:44:12 mtcampbe Exp $
52 !
53 ! Copyright: (c) 2000-2004 by the University of Illinois
54 !
55 ! ******************************************************************************
56 
57 SUBROUTINE rflu_printlocinfo(pRegion,locUnsorted,nLocUnsorted,locInfoMode, &
58  outputmode)
59 
60  USE modglobal, ONLY: t_global
61  USE moddatatypes
62  USE modparameters
63  USE moderror
64  USE modmpi
65 
66  USE modbndpatch, ONLY: t_patch
67  USE moddatastruct, ONLY: t_region
68  USE modgrid, ONLY: t_grid
69  USE modsortsearch
70 
71  IMPLICIT NONE
72 
73 ! ******************************************************************************
74 ! Declarations and definitions
75 ! ******************************************************************************
76 
77 ! ==============================================================================
78 ! Parameters
79 ! ==============================================================================
80 
81  INTEGER, INTENT(IN) :: locinfomode,nlocunsorted,outputmode
82  INTEGER, INTENT(INOUT) :: locunsorted(1:nlocunsorted,min_val:max_val)
83  TYPE(t_region), POINTER :: pregion
84 
85 ! ==============================================================================
86 ! Local variables
87 ! ==============================================================================
88 
89  LOGICAL :: outputflag
90  CHARACTER(CHRLEN) :: celltypestring,locstring,rcsidentstring,tempstring
91  INTEGER :: errorflag,il,ib,ic,iccntr,icflag,icl,ict,id,ipatch,iv,ivcntr, &
92  ivflag,ivg,jl,nlocsorted,nlocsortedest,nvertsimplified, &
93  nvertunsorted,vlen
94  INTEGER :: v(8)
95  INTEGER, DIMENSION(:), ALLOCATABLE :: bf2csorted,locsorted,locbound, &
96  vertsorted,vertunsorted
97  TYPE(t_patch), POINTER :: ppatch
98  TYPE(t_global), POINTER :: global
99  TYPE(t_grid), POINTER :: pgrid
100 
101  rcsidentstring = '$RCSfile: RFLU_PrintLocInfo.F90,v $ $Revision: 1.18 $'
102 
103 ! ******************************************************************************
104 ! Start, set output flag
105 ! ******************************************************************************
106 
107  global => pregion%global
108 
109  CALL registerfunction(global,'RFLU_PrintLocInfo',&
110  'RFLU_PrintLocInfo.F90')
111 
112  IF ( outputmode == output_mode_master_only ) THEN
113  outputflag = (global%myProcid == masterproc)
114  ELSE IF ( outputmode == output_mode_anybody ) THEN
115  outputflag = .true.
116  ELSE
117  CALL errorstop(global,err_reached_default,__line__)
118  END IF ! outputMode
119 
120  IF ( (outputflag .EQV. .true.) .AND. &
121  global%verbLevel >= verbose_high ) THEN
122  WRITE(stdout,'(A,1X,A)') solver_name,'Printing location information...'
123  WRITE(stdout,'(A,3X,A,1X,I5.5)') solver_name,'Global region:', &
124  pregion%iRegionGlobal
125  END IF ! global
126 
127 ! ==============================================================================
128 ! Set grid pointer
129 ! ==============================================================================
130 
131  pgrid => pregion%grid
132 
133 ! ==============================================================================
134 ! Check whether cell centroids allocated and computed
135 ! ==============================================================================
136 
137  IF ( ASSOCIATED(pgrid%cofg) .EQV. .false. ) THEN
138  global%warnCounter = global%warnCounter + 1
139 
140  IF ( (outputflag .EQV. .true.) .AND. &
141  global%verbLevel >= verbose_none ) THEN
142  WRITE(stdout,'(A,3X,A,1X,A,1X,A)') solver_name, &
143  '*** WARNING *** Array cofg not allocated.', &
144  'Returning to calling procedure.'
145  END IF ! global
146 
147  goto 1
148  END IF ! ASSOCIATED
149 
150  IF ( (minval(pgrid%cofg) == 0.0_rfreal) .AND. &
151  (maxval(pgrid%cofg) == 0.0_rfreal) ) THEN
152  global%warnCounter = global%warnCounter + 1
153 
154  IF ( (outputflag .EQV. .true.) .AND. &
155  global%verbLevel >= verbose_none ) THEN
156  WRITE(stdout,'(A,3X,A,1X,A,1X,A)') solver_name,'*** WARNING ***', &
157  'Geometry apparently not computed yet.', &
158  'Returning to calling procedure.'
159  END IF ! global
160 
161  goto 1
162  END IF ! MINVAL
163 
164 ! ==============================================================================
165 ! Check whether boundary face data structure allocated and meaningful
166 ! ==============================================================================
167 
168  DO ipatch = 1,pgrid%nPatches
169  ppatch => pregion%patches(ipatch)
170 
171  IF ( ASSOCIATED(ppatch%bf2c) .EQV. .false. ) THEN
172  global%warnCounter = global%warnCounter + 1
173 
174  IF ( (outputflag .EQV. .true.) .AND. &
175  global%verbLevel >= verbose_none ) THEN
176  WRITE(stdout,'(A,3X,A,1X,A)') solver_name, &
177  '*** WARNING *** Array bf2c not allocated.', &
178  'Returning to calling procedure.'
179  END IF ! global
180 
181  goto 1
182  END IF ! ASSOCIATED
183 
184  IF ( (minval(ppatch%bf2c) == 0) .AND. (maxval(ppatch%bf2c) == 0) ) THEN
185  global%warnCounter = global%warnCounter + 1
186 
187  IF ( (outputflag .EQV. .true.) .AND. &
188  global%verbLevel >= verbose_none ) THEN
189  WRITE(stdout,'(A,3X,A,1X,A)') solver_name, &
190  '*** WARNING *** Array bf2c apparently not yet filled.', &
191  'Returning to calling procedure.'
192  END IF ! global
193 
194  goto 1
195  END IF ! ASSOCIATED
196  END DO ! iPatch
197 
198 ! ******************************************************************************
199 ! Sort and merge array of extrema locations
200 ! ******************************************************************************
201 
202  CALL quicksortinteger(locunsorted(1:nlocunsorted,min_val),nlocunsorted)
203  CALL quicksortinteger(locunsorted(1:nlocunsorted,max_val),nlocunsorted)
204 
205  nlocsortedest = 2*nlocunsorted
206 
207  ALLOCATE(locsorted(nlocsortedest),stat=errorflag)
208  global%error = errorflag
209  IF ( global%error /= err_none ) THEN
210  CALL errorstop(global,err_allocate,__line__,'locSorted')
211  END IF ! global%error
212 
213  locsorted(:) = 0
214 
215  CALL mergesortedintegers(global,nlocunsorted,nlocunsorted, &
216  locunsorted(1:nlocunsorted,min_val), &
217  locunsorted(1:nlocunsorted,max_val), &
218  nlocsortedest,nlocsorted,locsorted)
219 
220  IF ( (outputflag .EQV. .true.) .AND. &
221  global%verbLevel >= verbose_high ) THEN
222  WRITE(stdout,'(A,3X,A)') solver_name,'Cell location information:'
223  WRITE(stdout,'(A,6X,A,6X,A,3X,A,2(4X,A),3X,A)') solver_name,'#','Cell', &
224  'x-coordinate','y-coordinate','z-coordinate','Location'
225  END IF ! global
226 
227 ! ******************************************************************************
228 ! Loop over locations, determine more information on cells
229 ! ******************************************************************************
230 
231  ALLOCATE(locbound(pgrid%nPatches),stat=errorflag)
232  global%error = errorflag
233  IF ( global%error /= err_none ) THEN
234  CALL errorstop(global,err_allocate,__line__,'locBound')
235  END IF ! global%error
236 
237  DO il = 1,nlocsorted
238  ic = locsorted(il)
239 
240  iccntr = 0
241 
242 ! ==============================================================================
243 ! Loop over boundary face-to-cell lists and search for cell. NOTE bf2c list
244 ! is not sorted, so need to sort first for binary search to work.
245 ! ==============================================================================
246 
247  DO ipatch = 1,pgrid%nPatches
248  ppatch => pregion%patches(ipatch)
249 
250  IF ( ppatch%nBFaces > 0 ) THEN
251  ALLOCATE(bf2csorted(ppatch%nBFaces),stat=errorflag)
252  global%error = errorflag
253  IF ( global%error /= err_none ) THEN
254  CALL errorstop(global,err_allocate,__line__,'bf2cSorted')
255  END IF ! global%error
256 
257  bf2csorted(1:ppatch%nBFaces) = ppatch%bf2c(1:ppatch%nBFaces)
258 
259  CALL quicksortinteger(bf2csorted,ppatch%nBFaces)
260  CALL binarysearchinteger(bf2csorted,ppatch%nBFaces,ic,icflag)
261 
262  IF ( icflag /= element_not_found ) THEN ! vertex found
263  iccntr = iccntr + 1
264  locbound(iccntr) = ppatch%iPatchGlobal
265  END IF ! ivFlag
266 
267  DEALLOCATE(bf2csorted,stat=errorflag)
268  global%error = errorflag
269  IF ( global%error /= err_none ) THEN
270  CALL errorstop(global,err_deallocate,__line__,'bf2cSorted')
271  END IF ! global%error
272  END IF ! pPatch%nBFaces
273  END DO ! iPatch
274 
275 ! ==============================================================================
276 ! Cell found, write out information
277 ! ==============================================================================
278 
279  IF ( iccntr == 0 ) THEN ! interior cell
280  WRITE(locstring,'(A)') 'Interior'
281  ELSE ! cell adjacent to patch
282  IF ( iccntr == 1 ) THEN
283  WRITE(locstring,'(A,1X,I3)') 'Global patch:',locbound(iccntr)
284  ELSE
285  WRITE(locstring,'(A)') 'Global patches: '
286  DO jl = 1,iccntr
287  WRITE(tempstring,'(1X,I3)') locbound(jl)
288  locstring = trim(locstring)//trim(tempstring)
289  END DO ! jl
290  END IF ! icCntr
291  END IF ! icCntr
292 
293  IF ( (outputflag .EQV. .true.) .AND. &
294  global%verbLevel >= verbose_high ) THEN
295  WRITE(stdout,'(A,4X,I3,1X,I9,3(1X,E15.8),2X,A)') solver_name,il,ic, &
296  pgrid%cofg(xcoord:zcoord,ic),trim(locstring)
297  END IF ! global
298  END DO ! il
299 
300 ! ******************************************************************************
301 ! If in verbose mode, print more information
302 ! ******************************************************************************
303 
304  IF ( locinfomode == locinfo_mode_verbose ) THEN
305 
306 ! ==============================================================================
307 ! Determine more information on vertices which make up cells
308 ! ==============================================================================
309 
310  IF ( (outputflag .EQV. .true.) .AND. &
311  global%verbLevel >= verbose_high ) THEN
312  WRITE(stdout,'(A,3X,A,2(1X,A))') solver_name,'Cell connectivity', &
313  'information:'
314  WRITE(stdout,'(A,6X,A,6X,A,2X,A,24X,A)') solver_name,'#','Cell', &
315  'Type','Vertices'
316  END IF ! global
317 
318  ALLOCATE(vertunsorted(8*nlocsorted),stat=errorflag)
319  global%error = errorflag
320  IF ( global%error /= err_none ) THEN
321  CALL errorstop(global,err_allocate,__line__,'vertUnsorted')
322  END IF ! global%error
323 
324  nvertunsorted = 0
325 
326  DO il = 1,nlocsorted
327  ic = locsorted(il)
328 
329  ict = pgrid%cellGlob2Loc(1,ic)
330  icl = pgrid%cellGlob2Loc(2,ic)
331 
332  SELECT CASE ( ict )
333  CASE ( cell_type_tet )
334  celltypestring = 'Tetrahedron'
335  vlen = 4
336  v(1:vlen) = pgrid%tet2v(1:vlen,icl)
337 
338  IF ( (outputflag .EQV. .true.) .AND. &
339  global%verbLevel >= verbose_high ) THEN
340  WRITE(stdout,'(A,4X,I3,1X,I9,2X,A11,4(1X,I9))') solver_name,il, &
341  ic,celltypestring,v(1:vlen)
342  END IF ! global
343 
344  vertunsorted(nvertunsorted+1:nvertunsorted + vlen) = v(1:vlen)
345  nvertunsorted = nvertunsorted + vlen
346  CASE ( cell_type_hex )
347  celltypestring = 'Hexahedron'
348  vlen = 8
349  v(1:vlen) = pgrid%hex2v(1:vlen,icl)
350 
351  IF ( (outputflag .EQV. .true.) .AND. &
352  global%verbLevel >= verbose_high ) THEN
353  WRITE(stdout,'(A,4X,I3,1X,I9,2X,A11,8(1X,I9))') solver_name,il, &
354  ic,celltypestring,v(1:vlen)
355  END IF ! global
356 
357  vertunsorted(nvertunsorted+1:nvertunsorted + vlen) = v(1:vlen)
358  nvertunsorted = nvertunsorted + vlen
359  CASE ( cell_type_pri )
360  celltypestring = 'Prism'
361 
362  vlen = 6
363  v(1:vlen) = pgrid%pri2v(1:vlen,icl)
364 
365  IF ( (outputflag .EQV. .true.) .AND. &
366  global%verbLevel >= verbose_high ) THEN
367  WRITE(stdout,'(A,4X,I3,1X,I9,2X,A11,6(1X,I9))') solver_name,il, &
368  ic,celltypestring,v(1:vlen)
369  END IF ! global
370 
371  vertunsorted(nvertunsorted+1:nvertunsorted + vlen) = v(1:vlen)
372  nvertunsorted = nvertunsorted + vlen
373  CASE ( cell_type_pyr )
374  celltypestring = 'Pyramid'
375 
376  vlen = 5
377  v(1:vlen) = pgrid%pyr2v(1:vlen,icl)
378 
379  IF ( (outputflag .EQV. .true.) .AND. &
380  global%verbLevel >= verbose_high ) THEN
381  WRITE(stdout,'(A,4X,I3,1X,I9,2X,A11,5(1X,I9))') solver_name,il, &
382  ic,celltypestring,v(1:vlen)
383  END IF ! global
384 
385  vertunsorted(nvertunsorted+1:nvertunsorted + vlen) = v(1:vlen)
386  nvertunsorted = nvertunsorted + vlen
387  CASE default
388  CALL errorstop(global,err_reached_default,__line__)
389  END SELECT ! ict
390  END DO ! il
391 
392 ! ==============================================================================
393 ! Printing vertex information
394 ! ==============================================================================
395 
396  IF ( (outputflag .EQV. .true.) .AND. &
397  global%verbLevel >= verbose_high ) THEN
398  WRITE(stdout,'(A,3X,A,2(1X,A))') solver_name,'Vertex location', &
399  'information:'
400  WRITE(stdout,'(A,6X,A,4X,A,3X,A,2(4X,A),3X,A)') solver_name,'#', &
401  'Vertex','x-coordinate','y-coordinate','z-coordinate','Location'
402  END IF ! global
403 
404  CALL quicksortinteger(vertunsorted,nvertunsorted)
405  CALL simplifysortedintegers(vertunsorted,nvertunsorted,nvertsimplified)
406 
407  DO iv = 1,nvertsimplified
408  ivg = vertunsorted(iv)
409 
410 ! ------------------------------------------------------------------------------
411 ! Loop over boundary vertex lists and search for vertex
412 ! ------------------------------------------------------------------------------
413 
414  ivcntr = 0
415 
416  DO ipatch = 1,pgrid%nPatches
417  ppatch => pregion%patches(ipatch)
418 
419  IF ( ppatch%nBVert > 0 ) THEN
420  CALL binarysearchinteger(ppatch%bv,ppatch%nBVert,ivg,ivflag)
421  ELSE
422  ivflag = element_not_found
423  END IF ! pPatch%nBVert
424 
425  IF ( ivflag /= element_not_found ) THEN ! vertex found
426  ivcntr = ivcntr + 1
427  locbound(ivcntr) = ipatch
428  END IF ! ivFlag
429  END DO ! iPatch
430 
431 ! ------------------------------------------------------------------------------
432 ! Vertex found, write out information
433 ! ------------------------------------------------------------------------------
434 
435  IF ( ivcntr == 0 ) THEN ! interior vertex
436  WRITE(locstring,'(A)') 'Interior'
437  ELSE ! boundary vertex
438  IF ( ivcntr == 1 ) THEN
439  WRITE(locstring,'(A,1X,I3)') 'Boundary:',locbound(ivcntr)
440  ELSE
441  WRITE(locstring,'(A)') 'Boundaries: '
442  DO jl = 1,ivcntr
443  WRITE(tempstring,'(1X,I3)') locbound(jl)
444  locstring = trim(locstring)//trim(tempstring)
445  END DO ! jl
446  END IF ! ivCntr
447  END IF ! ivCntr
448 
449  IF ( (outputflag .EQV. .true.) .AND. &
450  global%verbLevel >= verbose_high ) THEN
451  WRITE(stdout,'(A,4X,I3,1X,I9,3(1X,E15.8),2X,A)') solver_name,iv, &
452  ivg,pgrid%xyz(xcoord:zcoord,ivg),trim(locstring)
453  END IF ! global
454  END DO ! iv
455 
456  DEALLOCATE(vertunsorted,stat=errorflag)
457  global%error = errorflag
458  IF ( global%error /= err_none ) THEN
459  CALL errorstop(global,err_deallocate,__line__,'vertUnsorted')
460  END IF ! global%error
461  END IF ! locInfoMode
462 
463  DEALLOCATE(locbound,stat=errorflag)
464  global%error = errorflag
465  IF ( global%error /= err_none ) THEN
466  CALL errorstop(global,err_deallocate,__line__,'locBound')
467  END IF ! global%error
468 
469  DEALLOCATE(locsorted,stat=errorflag)
470  global%error = errorflag
471  IF ( global%error /= err_none ) THEN
472  CALL errorstop(global,err_deallocate,__line__,'locSorted')
473  END IF ! global%error
474 
475 1 CONTINUE
476 
477 ! ******************************************************************************
478 ! End
479 ! ******************************************************************************
480 
481  IF ( (outputflag .EQV. .true.) .AND. &
482  global%verbLevel >= verbose_high ) THEN
483  WRITE(stdout,'(A,1X,A)') solver_name,'Printing location information done.'
484  END IF ! global
485 
486  CALL deregisterfunction(global)
487 
488 END SUBROUTINE rflu_printlocinfo
489 
490 ! ******************************************************************************
491 !
492 ! RCS Revision history:
493 !
494 ! $Log: RFLU_PrintLocInfo.F90,v $
495 ! Revision 1.18 2008/12/06 08:44:12 mtcampbe
496 ! Updated license.
497 !
498 ! Revision 1.17 2008/11/19 22:17:25 mtcampbe
499 ! Added Illinois Open Source License/Copyright
500 !
501 ! Revision 1.16 2006/04/07 15:19:16 haselbac
502 ! Removed tabs
503 !
504 ! Revision 1.15 2005/03/23 17:08:02 haselbac
505 ! Bug fix: Only call search when have nonzero vertices
506 !
507 ! Revision 1.14 2004/10/19 19:25:12 haselbac
508 ! Cosmetics only
509 !
510 ! Revision 1.13 2003/12/04 03:23:57 haselbac
511 ! Changed formatting of output
512 !
513 ! Revision 1.12 2003/07/22 01:57:21 haselbac
514 ! Added global%warnCounter and changed ip to iPatch
515 !
516 ! Revision 1.11 2003/06/04 22:42:08 haselbac
517 ! Added argument to indicate who can write to screen
518 !
519 ! Revision 1.10 2003/04/28 22:40:26 haselbac
520 ! Changed region to pRegion, was actually a bug
521 !
522 ! Revision 1.9 2003/03/15 17:05:58 haselbac
523 ! Added argument, 2 bug fixes, increased output
524 !
525 ! Revision 1.8 2003/01/28 15:40:00 haselbac
526 ! Cosmetics only
527 !
528 ! Revision 1.7 2002/10/27 18:53:41 haselbac
529 ! Changed declaration of locUnsorted
530 !
531 ! Revision 1.6 2002/10/17 19:57:57 haselbac
532 ! Cosmetic changes to output
533 !
534 ! Revision 1.5 2002/10/08 15:48:56 haselbac
535 ! {IO}STAT=global%error replaced by {IO}STAT=errorFlag - SGI problem
536 !
537 ! Revision 1.4 2002/10/05 18:48:20 haselbac
538 ! Cosmetic changes to output formatting
539 !
540 ! Revision 1.3 2002/09/09 14:15:01 haselbac
541 ! global now under regions, changed interface to MergeSortedIntegers
542 !
543 ! Revision 1.2 2002/06/17 13:31:22 haselbac
544 ! Prefixed SOLVER_NAME to all screen output
545 !
546 ! Revision 1.1 2002/05/04 16:09:00 haselbac
547 ! Initial revision
548 !
549 ! ******************************************************************************
550 
551 
552 
553 
554 
555 
556 
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
**********************************************************************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 ic
subroutine simplifysortedintegers(a, na, nb)
subroutine quicksortinteger(a, n)
subroutine binarysearchinteger(a, n, v, i, j)
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS 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 v
Definition: roccomf90.h:20
subroutine rflu_printlocinfo(pRegion, locUnsorted, nLocUnsorted, locInfoMode, outputMode)
unsigned long id(const Leda_like_handle &x)
Definition: Handle.h:107
subroutine mergesortedintegers(global, na, nb, a, b, nm, im, m)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469