Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_ModBoundLists.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: Suite of routines to build boundary lists.
26 !
27 ! Description: None.
28 !
29 ! Notes:
30 ! 1. The creation and destruction routines are needed despite the existence
31 ! of RFLU_CreateGrid.F90 and RFLU_DestroyGrid.F90 because rfluprep needs
32 ! to construct the boundary vertex lists from the exterior grid formats.
33 !
34 ! ******************************************************************************
35 !
36 ! $Id: RFLU_ModBoundLists.F90,v 1.33 2008/12/06 08:44:20 mtcampbe Exp $
37 !
38 ! Copyright: (c) 2002-2005 by the University of Illinois
39 !
40 ! ******************************************************************************
41 
43 
44  USE modglobal, ONLY: t_global
45  USE moddatatypes
46  USE modparameters
47  USE moderror
48  USE modbndpatch, ONLY: t_patch
49  USE moddatastruct, ONLY: t_region
50  USE modgrid, ONLY: t_grid
51  USE modmpi
52 
54 
55  IMPLICIT NONE
56 
57  PRIVATE
58  PUBLIC :: rflu_buildbcellmlist, &
80 
81  SAVE
82 
83 ! ******************************************************************************
84 ! Declarations and definitions
85 ! ******************************************************************************
86 
87  CHARACTER(CHRLEN) :: &
88  RCSIdentString = '$RCSfile: RFLU_ModBoundLists.F90,v $ $Revision: 1.33 $'
89 
90 ! *****************************************************************************
91 ! Routines
92 ! *****************************************************************************
93 
94  CONTAINS
95 
96 
97 
98 
99 
100 
101 
102 ! ******************************************************************************
103 !
104 ! Purpose: Build master boundary-cell list.
105 !
106 ! Description: None.
107 !
108 ! Input:
109 ! pRegion Pointer to region
110 !
111 ! Output: None.
112 !
113 ! Notes:
114 ! 1. Include virtual faces because need to capture faces of virtual cells
115 ! from symmetry and periodic patches when using the master boundary-cell
116 ! list to build list of boundary faces for partitioned regions.
117 ! 2. Master boundary-cell list for cases with virtual cells from symmetry
118 ! and periodic patches includes cells from symmetry and periodic patches
119 ! although face list lists those faces as AV faces.
120 !
121 ! ******************************************************************************
122 
123  SUBROUTINE rflu_buildbcellmlist(pRegion)
124 
125  USE modsortsearch, ONLY: quicksortinteger, &
127 
128  IMPLICIT NONE
129 
130 ! ******************************************************************************
131 ! Declarations and definitions
132 ! ******************************************************************************
133 
134 ! ==============================================================================
135 ! Arguments
136 ! ==============================================================================
137 
138  TYPE(t_region), POINTER :: pregion
139 
140 ! ==============================================================================
141 ! Locals
142 ! ==============================================================================
143 
144  INTEGER :: errorflag,ifl,ifl2,ipatch,nbcells
145  TYPE(t_global), POINTER :: global
146  TYPE(t_grid), POINTER :: pgrid
147  TYPE(t_patch), POINTER :: ppatch
148 
149 ! ******************************************************************************
150 ! Start
151 ! ******************************************************************************
152 
153  global => pregion%global
154 
155  CALL registerfunction(global,'RFLU_BuildBCellMList',&
156  'RFLU_ModBoundLists.F90')
157 
158  IF ( global%myProcid == masterproc .AND. &
159  global%verbLevel >= verbose_med ) THEN
160  WRITE(stdout,'(A,1X,A)') solver_name, &
161  'Building master boundary-cell list...'
162  END IF ! global%verbLevel
163 
164 ! ******************************************************************************
165 ! Set grid pointer
166 ! ******************************************************************************
167 
168  pgrid => pregion%grid
169 
170 ! ******************************************************************************
171 ! Build merged boundary-cell list which may contain duplicates
172 ! ******************************************************************************
173 
174  nbcells = 0
175 
176  DO ipatch = 1,pregion%grid%nPatches
177  ppatch => pregion%patches(ipatch)
178 
179  DO ifl = 1,ppatch%nBFacesTot
180  ifl2 = nbcells + ifl
181 
182  pgrid%bcm(ifl2) = ppatch%bf2c(ifl)
183  END DO ! ifl
184 
185  nbcells = nbcells + ppatch%nBFacesTot
186  END DO ! iPatch
187 
188 ! ******************************************************************************
189 ! Eliminate duplicates
190 ! ******************************************************************************
191 
192  IF ( nbcells > 0 ) THEN
193  CALL quicksortinteger(pgrid%bcm(1:nbcells),nbcells)
194  CALL simplifysortedintegers(pgrid%bcm(1:nbcells),nbcells,pgrid%nBCells)
195  END IF ! nBCells
196 
197 ! ******************************************************************************
198 ! Write info
199 ! ******************************************************************************
200 
201  IF ( global%myProcid == masterproc .AND. &
202  global%verbLevel >= verbose_high ) THEN
203  WRITE(stdout,'(A,3X,A,1X,I9)') solver_name,'Number of boundary cells:', &
204  pgrid%nBCells
205  END IF ! global%verbLevel
206 
207 ! ******************************************************************************
208 ! End
209 ! ******************************************************************************
210 
211  IF ( global%myProcid == masterproc .AND. &
212  global%verbLevel >= verbose_high ) THEN
213  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
214  'Building master boundary-cell list done.'
215  END IF ! global%verbLevel
216 
217  CALL deregisterfunction(global)
218 
219  END SUBROUTINE rflu_buildbcellmlist
220 
221 
222 
223 
224 
225 
226 
227 
228 
229 ! ******************************************************************************
230 !
231 ! Purpose: Build local boundary face lists.
232 !
233 ! Description: None.
234 !
235 ! Input:
236 ! pRegion Pointer to region
237 !
238 ! Output: None.
239 !
240 ! Notes: None.
241 !
242 ! ******************************************************************************
243 
244  SUBROUTINE rflu_buildbfaceloclists(pRegion)
245 
246  IMPLICIT NONE
247 
248 ! ******************************************************************************
249 ! Declarations and definitions
250 ! ******************************************************************************
251 
252 ! ==============================================================================
253 ! Arguments
254 ! ==============================================================================
255 
256  TYPE(t_region), POINTER :: pregion
257 
258 ! ==============================================================================
259 ! Locals
260 ! ==============================================================================
261 
262  INTEGER :: errorflag,ifl,ipatch
263  TYPE(t_global), POINTER :: global
264  TYPE(t_grid), POINTER :: pgrid
265  TYPE(t_patch), POINTER :: ppatch
266 
267 ! ******************************************************************************
268 ! Start
269 ! ******************************************************************************
270 
271  global => pregion%global
272 
273  CALL registerfunction(global,'RFLU_BuildBFaceLocLists',&
274  'RFLU_ModBoundLists.F90')
275 
276  IF ( global%myProcid == masterproc .AND. &
277  global%verbLevel >= verbose_high ) THEN
278  WRITE(stdout,'(A,1X,A)') solver_name, &
279  'Building local boundary-face lists...'
280  END IF ! global%verbLevel
281 
282 ! ******************************************************************************
283 ! Set grid pointer
284 ! ******************************************************************************
285 
286  pgrid => pregion%grid
287 
288 ! ******************************************************************************
289 ! Build local boundary connectivity lists for each patch
290 ! ******************************************************************************
291 
292  DO ipatch = 1,pregion%grid%nPatches
293  ppatch => pregion%patches(ipatch)
294 
295  IF ( ppatch%nBTrisTot > 0 ) THEN
296  DO ifl = 1,ppatch%nBTrisTot
297  ppatch%bTri2vLoc(1,ifl) = ppatch%bTri2v(1,ifl)
298  ppatch%bTri2vLoc(2,ifl) = ppatch%bTri2v(2,ifl)
299  ppatch%bTri2vLoc(3,ifl) = ppatch%bTri2v(3,ifl)
300  END DO ! ifl
301 
302  CALL rflu_renumberlist(global,3,ppatch%nBTrisTot, &
303  ppatch%bTri2vLoc(1:3,1:ppatch%nBTrisTot), &
304  ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
305  END IF ! pPatch%nBTrisTot
306 
307  IF ( ppatch%nBQuadsTot > 0 ) THEN
308  DO ifl = 1,ppatch%nBQuadsTot
309  ppatch%bQuad2vLoc(1,ifl) = ppatch%bQuad2v(1,ifl)
310  ppatch%bQuad2vLoc(2,ifl) = ppatch%bQuad2v(2,ifl)
311  ppatch%bQuad2vLoc(3,ifl) = ppatch%bQuad2v(3,ifl)
312  ppatch%bQuad2vLoc(4,ifl) = ppatch%bQuad2v(4,ifl)
313  END DO ! ifl
314 
315  CALL rflu_renumberlist(global,4,ppatch%nBQuadsTot, &
316  ppatch%bQuad2vLoc(1:4,1:ppatch%nBQuadsTot), &
317  ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
318  END IF ! pPatch%nBQuadsTot
319  END DO ! iPatch
320 
321 ! ******************************************************************************
322 ! End
323 ! ******************************************************************************
324 
325  IF ( global%myProcid == masterproc .AND. &
326  global%verbLevel >= verbose_high ) THEN
327  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
328  'Building local boundary-face lists done.'
329  END IF ! global%verbLevel
330 
331  CALL deregisterfunction(global)
332 
333  END SUBROUTINE rflu_buildbfaceloclists
334 
335 
336 
337 
338 
339 
340 
341 ! ******************************************************************************
342 !
343 ! Purpose: Build sorted boundary face lists.
344 !
345 ! Description: None.
346 !
347 ! Input:
348 ! pRegion Pointer to region
349 !
350 ! Output: None.
351 !
352 ! Notes: None.
353 !
354 ! ******************************************************************************
355 
356  SUBROUTINE rflu_buildbfacesortlists(pRegion)
357 
359 
360  IMPLICIT NONE
361 
362 ! ******************************************************************************
363 ! Declarations and definitions
364 ! ******************************************************************************
365 
366 ! ==============================================================================
367 ! Arguments
368 ! ==============================================================================
369 
370  TYPE(t_region), POINTER :: pregion
371 
372 ! ==============================================================================
373 ! Locals
374 ! ==============================================================================
375 
376  INTEGER :: errorflag,ifl,ipatch
377  TYPE(t_global), POINTER :: global
378  TYPE(t_grid), POINTER :: pgrid
379  TYPE(t_patch), POINTER :: ppatch
380 
381 ! ******************************************************************************
382 ! Start
383 ! ******************************************************************************
384 
385  global => pregion%global
386 
387  CALL registerfunction(global,'RFLU_BuildBFaceSortLists',&
388  'RFLU_ModBoundLists.F90')
389 
390  IF ( global%myProcid == masterproc .AND. &
391  global%verbLevel >= verbose_high ) THEN
392  WRITE(stdout,'(A,1X,A)') solver_name, &
393  'Building sorted boundary-face lists...'
394  END IF ! global%verbLevel
395 
396 ! ******************************************************************************
397 ! Set grid pointer
398 ! ******************************************************************************
399 
400  pgrid => pregion%grid
401 
402 ! ******************************************************************************
403 ! Build sorted boundary cell list for each patch
404 ! ******************************************************************************
405 
406  DO ipatch = 1,pregion%grid%nPatches
407  ppatch => pregion%patches(ipatch)
408 
409  DO ifl = 1,ppatch%nBFacesTot
410  ppatch%bf2cSorted(ifl) = ppatch%bf2c(ifl)
411  END DO ! ifl
412 
413  CALL quicksortinteger(ppatch%bf2cSorted,ppatch%nBFacesTot)
414  END DO ! iPatch
415 
416 ! ******************************************************************************
417 ! End
418 ! ******************************************************************************
419 
420  IF ( global%myProcid == masterproc .AND. &
421  global%verbLevel >= verbose_high ) THEN
422  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
423  'Building sorted boundary-face lists done.'
424  END IF ! global%verbLevel
425 
426  CALL deregisterfunction(global)
427 
428  END SUBROUTINE rflu_buildbfacesortlists
429 
430 
431 
432 
433 
434 
435 
436 
437 ! ******************************************************************************
438 !
439 ! Purpose: Build boundary vertex lists.
440 !
441 ! Description: None.
442 !
443 ! Input:
444 ! pRegion Pointer to region
445 !
446 ! Output: None.
447 !
448 ! Notes: None.
449 !
450 ! ******************************************************************************
451 
452  SUBROUTINE rflu_buildbvertexlists(pRegion)
453 
454  USE modsortsearch
455 
456  USE rflu_modhashtable
457 
458  IMPLICIT NONE
459 
460 ! ******************************************************************************
461 ! Declarations and definitions
462 ! ******************************************************************************
463 
464 ! ==============================================================================
465 ! Arguments
466 ! ==============================================================================
467 
468  TYPE(t_region), POINTER :: pregion
469 
470 ! ==============================================================================
471 ! Locals
472 ! ==============================================================================
473 
474  INTEGER :: actualcntr,errorflag,ic,ifc,iloc,ipatch,iq,it,ivg,ivl,key, &
475  virtualcntr
476  INTEGER, DIMENSION(:), ALLOCATABLE :: bvactual,bvvirtual
477  TYPE(t_global), POINTER :: global
478  TYPE(t_grid), POINTER :: pgrid
479  TYPE(t_patch), POINTER :: ppatch
480 
481 ! ******************************************************************************
482 ! Start
483 ! ******************************************************************************
484 
485  global => pregion%global
486 
487  CALL registerfunction(global,'RFLU_BuildBVertexLists',&
488  'RFLU_ModBoundLists.F90')
489 
490  IF ( global%myProcid == masterproc .AND. &
491  global%verbLevel >= verbose_med ) THEN
492  WRITE(stdout,'(A,1X,A)') solver_name
493  WRITE(stdout,'(A,1X,A)') solver_name,'Building boundary-vertex lists...'
494  END IF ! global%verbLevel
495 
496 ! ******************************************************************************
497 ! Loop over patches
498 ! ******************************************************************************
499 
500  pgrid => pregion%grid
501 
502  DO ipatch = 1,pregion%grid%nPatches
503  ppatch => pregion%patches(ipatch)
504 
505  CALL rflu_createhashtable(global,ppatch%nBVertEst)
506 
507  IF ( global%myProcid == masterproc .AND. &
508  global%verbLevel >= verbose_med ) THEN
509  WRITE(stdout,'(A,3X,A,1X,I3)') solver_name,'Boundary:',ipatch
510  WRITE(stdout,'(A,5X,A,2X,I8)') solver_name,'Estimated number of '// &
511  'vertices:',ppatch%nBVertEst
512 
513  IF ( global%myProcid == masterproc .AND. &
514  global%verbLevel >= verbose_med ) THEN
515  WRITE(stdout,'(A,5X,A,13X,I9)') solver_name,'Hash table size: ', &
516  hashtablesize
517  END IF ! global%myProcid
518  END IF ! global%myProcid
519 
520 ! ==============================================================================
521 ! Initialize counters. NOTE important because incremented and for GENX runs
522 ! get size of boundary vertices from HDF files, so they are NOT zero when
523 ! this routine is called.
524 ! ==============================================================================
525 
526  ppatch%nBVert = 0
527  ppatch%nBVertTot = 0
528 
529 ! ==============================================================================
530 ! Triangles
531 ! ==============================================================================
532 
533  DO it = 1,ppatch%nBTrisTot
534  ivg = ppatch%bTri2v(1,it)
535  CALL rflu_hashbuildkey1(ivg,key)
536  CALL rflu_hashvertex(global,key,ivg,ppatch%nBVertTot,ppatch%bvTemp)
537 
538  ivg = ppatch%bTri2v(2,it)
539  CALL rflu_hashbuildkey1(ivg,key)
540  CALL rflu_hashvertex(global,key,ivg,ppatch%nBVertTot,ppatch%bvTemp)
541 
542  ivg = ppatch%bTri2v(3,it)
543  CALL rflu_hashbuildkey1(ivg,key)
544  CALL rflu_hashvertex(global,key,ivg,ppatch%nBVertTot,ppatch%bvTemp)
545  END DO ! it
546 
547 ! ==============================================================================
548 ! Quadrilaterals
549 ! ==============================================================================
550 
551  DO iq = 1,ppatch%nBQuadsTot
552  ivg = ppatch%bQuad2v(1,iq)
553  CALL rflu_hashbuildkey1(ivg,key)
554  CALL rflu_hashvertex(global,key,ivg,ppatch%nBVertTot,ppatch%bvTemp)
555 
556  ivg = ppatch%bQuad2v(2,iq)
557  CALL rflu_hashbuildkey1(ivg,key)
558  CALL rflu_hashvertex(global,key,ivg,ppatch%nBVertTot,ppatch%bvTemp)
559 
560  ivg = ppatch%bQuad2v(3,iq)
561  CALL rflu_hashbuildkey1(ivg,key)
562  CALL rflu_hashvertex(global,key,ivg,ppatch%nBVertTot,ppatch%bvTemp)
563 
564  ivg = ppatch%bQuad2v(4,iq)
565  CALL rflu_hashbuildkey1(ivg,key)
566  CALL rflu_hashvertex(global,key,ivg,ppatch%nBVertTot,ppatch%bvTemp)
567  END DO ! iq
568 
569 ! ==============================================================================
570 ! Print some info on hash table and actual number of vertices
571 ! ==============================================================================
572 
573  IF ( global%myProcid == masterproc .AND. &
574  global%verbLevel >= verbose_med) THEN
575  WRITE(stdout,'(A,5X,A,18X,I9)') solver_name,'Collisions: ', &
576  hashtablecollisions
577  END IF ! global%myProcid
578 
579  IF ( global%myProcid == masterproc .AND. &
580  global%verbLevel >= verbose_med ) THEN
581  WRITE(stdout,'(A,5X,A,6X,I8)') solver_name,'Total number of '// &
582  'vertices:',ppatch%nBVertTot
583  END IF ! global%myProcid
584 
585 ! ==============================================================================
586 ! Destroy hash table
587 ! ==============================================================================
588 
589  CALL rflu_destroyhashtable(global)
590 
591 ! ******************************************************************************
592 ! Count number of actual and virtual boundary vertices
593 ! ******************************************************************************
594 
595  ppatch%nBVert = 0
596 
597  DO ivl = 1,ppatch%nBVertTot
598  ivg = ppatch%bvTemp(ivl)
599 
600  IF ( ivg <= pgrid%nVert ) THEN
601  ppatch%nBVert = ppatch%nBVert + 1
602  END IF ! ivg
603  END DO ! ivg
604 
605  IF ( global%myProcid == masterproc .AND. &
606  global%verbLevel >= verbose_med ) THEN
607  WRITE(stdout,'(A,7X,A,13X,I8)') solver_name,'Actual vertices:', &
608  ppatch%nBVert
609  WRITE(stdout,'(A,7X,A,12X,I8)') solver_name,'Virtual vertices:', &
610  ppatch%nBVertTot - ppatch%nBVert
611  END IF ! global%myProcid
612 
613 ! ******************************************************************************
614 ! Sort and store boundary vertex list - NOTE actual and virtual vertices
615 ! are stored separately
616 ! ******************************************************************************
617 
618  ALLOCATE(ppatch%bv(ppatch%nBVertTot),stat=errorflag)
619  global%error = errorflag
620  IF ( global%error /= err_none ) THEN
621  CALL errorstop(global,err_allocate,__line__,'pPatch%bv')
622  END IF ! global%error
623 
624  IF ( ppatch%nBVert > 0 ) THEN
625  ALLOCATE(bvactual(ppatch%nBVert),stat=errorflag)
626  global%error = errorflag
627  IF ( global%error /= err_none ) THEN
628  CALL errorstop(global,err_allocate,__line__,'bvActual')
629  END IF ! global%error
630  END IF ! pPatch%nBVert
631 
632  IF ( ppatch%nBVertTot /= ppatch%nBVert ) THEN
633  ALLOCATE(bvvirtual(ppatch%nBVertTot-ppatch%nBVert),stat=errorflag)
634  global%error = errorflag
635  IF ( global%error /= err_none ) THEN
636  CALL errorstop(global,err_allocate,__line__,'bvVirtual')
637  END IF ! global%error
638  END IF ! pPatch%nBVertTot
639 
640 ! ******************************************************************************
641 ! Sort actual and virtual vertices into separate (unsorted lists)
642 ! ******************************************************************************
643 
644  actualcntr = 0
645  virtualcntr = 0
646 
647  DO ivl = 1,ppatch%nBVertTot
648  ivg = ppatch%bvTemp(ivl)
649 
650  IF ( ivg <= pgrid%nVert ) THEN
651  actualcntr = actualcntr + 1
652  bvactual(actualcntr) = ppatch%bvTemp(ivl)
653  ELSE IF ( ivg <= pgrid%nVertTot ) THEN
654  virtualcntr = virtualcntr + 1
655  bvvirtual(virtualcntr) = ppatch%bvTemp(ivl)
656  ELSE
657  CALL errorstop(global,err_reached_default,__line__)
658  END IF ! ivg
659  END DO ! ivl
660 
661  IF ( (actualcntr /= ppatch%nBVert) .OR. &
662  (virtualcntr /= (ppatch%nBVertTot - ppatch%nBVert)) ) THEN
663  CALL errorstop(global,err_nbvert_extrema,__line__)
664  END IF ! actualCntr
665 
666 ! ******************************************************************************
667 ! Sort unsorted lists and merge into single list
668 ! ******************************************************************************
669 
670 ! ==============================================================================
671 ! Actual vertices
672 ! ==============================================================================
673 
674  IF ( ppatch%nBVert > 0 ) THEN
675  CALL quicksortinteger(bvactual,ppatch%nBVert)
676  END IF ! nBVert
677 
678  ppatch%bv(1:ppatch%nBVert) = bvactual(1:ppatch%nBVert)
679 
680 ! ==============================================================================
681 ! Virtual vertices
682 ! ==============================================================================
683 
684  IF ( ppatch%nBVertTot /= ppatch%nBVert ) THEN
685  CALL quicksortinteger(bvvirtual,ppatch%nBVertTot-ppatch%nBVert)
686 
687  ppatch%bv((ppatch%nBVert+1):ppatch%nBVertTot) = &
688  bvvirtual(1:(ppatch%nBVertTot-ppatch%nBVert))
689 
690  DEALLOCATE(bvvirtual,stat=errorflag)
691  global%error = errorflag
692  IF ( global%error /= err_none ) THEN
693  CALL errorstop(global,err_deallocate,__line__,'bvVirtual')
694  END IF ! global%error
695  END IF ! pPatch%nBVertTot
696 
697  IF ( ppatch%nBVert > 0 ) THEN
698  DEALLOCATE(bvactual,stat=errorflag)
699  global%error = errorflag
700  IF ( global%error /= err_none ) THEN
701  CALL errorstop(global,err_deallocate,__line__,'bvActual')
702  END IF ! global%error
703  END IF ! pPatch%nBVert
704 
705  DEALLOCATE(ppatch%bvTemp,stat=errorflag)
706  global%error = errorflag
707  IF ( global%error /= err_none ) THEN
708  CALL errorstop(global,err_deallocate,__line__,'pPatch%bvTemp')
709  END IF ! global%error
710  END DO ! iPatch
711 
712 #ifdef CHECK_DATASTRUCT
713 ! ******************************************************************************
714 ! Data structure output for checking
715 ! ******************************************************************************
716 
717  IF ( pgrid%nPatches > 0 ) THEN
718  WRITE(stdout,'(A)') solver_name
719  WRITE(stdout,'(A,1X,A)') solver_name,'### START CHECK OUTPUT ###'
720  WRITE(stdout,'(A,1X,A)') solver_name,'Boundary vertex lists:'
721  DO ipatch = 1,pgrid%nPatches
722  ppatch => pregion%patches(ipatch)
723 
724  WRITE(stdout,'(A,1X,A,1X,I3)') solver_name,'Boundary:',ipatch
725  WRITE(stdout,'(A,1X,A,1X,A,1X,I8)') solver_name,'Total number of ', &
726  'vertices:',ppatch%nBVertTot
727  WRITE(stdout,'(A,8(1X,I8))') solver_name,(ppatch%bv(ivl), &
728  ivl=1,ppatch%nBVertTot)
729  END DO ! iPatch
730  WRITE(stdout,'(A,1X,A)') solver_name,'### END CHECK OUTPUT ###'
731  WRITE(stdout,'(A)') solver_name
732  END IF ! pGrid%nPatches
733 #endif
734 
735 ! ******************************************************************************
736 ! End
737 ! ******************************************************************************
738 
739  IF ( global%myProcid == masterproc .AND. &
740  global%verbLevel >= verbose_med ) THEN
741  WRITE(stdout,'(A,1X,A)') solver_name, &
742  'Building boundary-vertex lists done.'
743  WRITE(stdout,'(A,1X,A)') solver_name
744  END IF ! global%verbLevel
745 
746  CALL deregisterfunction(global)
747 
748  END SUBROUTINE rflu_buildbvertexlists
749 
750 
751 
752 
753 
754 
755 
756 ! ******************************************************************************
757 !
758 ! Purpose: Build boundary-vertex master list.
759 !
760 ! Description: None.
761 !
762 ! Input:
763 ! pRegion Pointer to region
764 !
765 ! Output: None.
766 !
767 ! Notes: None.
768 !
769 ! ******************************************************************************
770 
771  SUBROUTINE rflu_buildbvertexmlist(pRegion)
772 
774 
775  IMPLICIT NONE
776 
777 ! ******************************************************************************
778 ! Declarations and definitions
779 ! ******************************************************************************
780 
781 ! ==============================================================================
782 ! Arguments
783 ! ==============================================================================
784 
785  TYPE(t_region), POINTER :: pregion
786 
787 ! ==============================================================================
788 ! Locals
789 ! ==============================================================================
790 
791  INTEGER :: bvmsize,errorflag,ipatch,iv,nbverttemp,workarraysize
792  INTEGER, DIMENSION(:), ALLOCATABLE :: bvmtemp,workarray
793  TYPE(t_global), POINTER :: global
794  TYPE(t_grid), POINTER :: pgrid
795  TYPE(t_patch), POINTER :: ppatch
796 
797 ! ******************************************************************************
798 ! Start
799 ! ******************************************************************************
800 
801  global => pregion%global
802 
803  CALL registerfunction(global,'RFLU_BuildBVertexMList',&
804  'RFLU_ModBoundLists.F90')
805 
806  IF ( global%myProcid == masterproc .AND. &
807  global%verbLevel >= verbose_high ) THEN
808  WRITE(stdout,'(A,1X,A)') solver_name, &
809  'Building boundary-vertex master list...'
810  END IF ! global%verbLevel
811 
812  pgrid => pregion%grid
813 
814 ! ******************************************************************************
815 ! Initialize variables and list
816 ! ******************************************************************************
817 
818  pgrid%nBVert = 0
819 
820  DO iv = 1,pgrid%nBVertEst
821  pgrid%bvm(iv) = 0 ! Initial value not important
822  END DO ! iv
823 
824 ! ******************************************************************************
825 ! Loop over patches
826 ! ******************************************************************************
827 
828  DO ipatch=1,pgrid%nPatches
829  ppatch => pregion%patches(ipatch)
830 
831  IF ( global%myProcid == masterproc .AND. &
832  global%verbLevel >= verbose_high) THEN
833  WRITE(stdout,'(A,3X,A,1X,I3)') solver_name,'Patch:',ipatch
834  END IF ! global%verbLevel
835 
836 ! ==============================================================================
837 ! Build list
838 ! ==============================================================================
839 
840  IF ( ipatch > 1 ) THEN
841  workarraysize = nbverttemp + ppatch%nBVertTot
842 
843  ALLOCATE(workarray(workarraysize),stat=errorflag)
844  global%error = errorflag
845  IF ( global%error /= err_none ) THEN
846  CALL errorstop(global,err_allocate,__line__,'workArray')
847  END IF ! global%error
848 
849  DO iv = 1,workarraysize
850  workarray(iv) = 0
851  END DO ! iv
852 
853  bvmsize = nbverttemp ! Next call does not work otherwise...
854 
855  CALL mergesortedintegers(global,bvmsize,ppatch%nBVertTot, &
856  pgrid%bvm(1:nbverttemp), &
857  ppatch%bv(1:ppatch%nBVertTot), &
858  workarraysize,nbverttemp,workarray)
859 
860  DO iv = 1,nbverttemp
861  pgrid%bvm(iv) = workarray(iv)
862  END DO ! iv
863 
864  DEALLOCATE(workarray,stat=errorflag)
865  global%error = errorflag
866  IF ( global%error /= err_none ) THEN
867  CALL errorstop(global,err_deallocate,__line__,'workArray')
868  END IF ! global%error
869  ELSE
870  DO iv = 1,ppatch%nBVertTot
871  pgrid%bvm(iv) = ppatch%bv(iv)
872  END DO ! iv
873 
874  bvmsize = 0
875  nbverttemp = ppatch%nBVertTot
876  END IF ! iPatch
877 
878  IF ( global%myProcid == masterproc .AND. &
879  global%verbLevel >= verbose_high) THEN
880  WRITE(stdout,'(A,5X,A,1X,I6,1X,A)') solver_name,'Contributed', &
881  nbverttemp-bvmsize, &
882  'new vertices.'
883  END IF ! global%verbLevel
884  END DO ! iPatch
885 
886 ! ******************************************************************************
887 ! Copy over into actual list
888 ! ******************************************************************************
889 
890  pgrid%nBVert = nbverttemp
891 
892  ALLOCATE(bvmtemp(pgrid%nBVert),stat=errorflag)
893  global%error = errorflag
894  IF ( global%error /= err_none ) THEN
895  CALL errorstop(global,err_allocate,__line__,'bvmTemp')
896  END IF ! global%error
897 
898  DO iv = 1,pgrid%nBVert
899  bvmtemp(iv) = pgrid%bvm(iv)
900  END DO ! iv
901 
902  DEALLOCATE(pgrid%bvm,stat=errorflag)
903  global%error = errorflag
904  IF ( global%error /= err_none ) THEN
905  CALL errorstop(global,err_deallocate,__line__,'pGrid%bvm')
906  END IF ! global%error
907 
908  ALLOCATE(pgrid%bvm(pgrid%nBVert),stat=errorflag)
909  global%error = errorflag
910  IF ( global%error /= err_none ) THEN
911  CALL errorstop(global,err_allocate,__line__,'pGrid%bvm')
912  END IF ! global%error
913 
914  DO iv = 1,pgrid%nBVert
915  pgrid%bvm(iv) = bvmtemp(iv)
916  END DO ! iv
917 
918  DEALLOCATE(bvmtemp,stat=errorflag)
919  global%error = errorflag
920  IF ( global%error /= err_none ) THEN
921  CALL errorstop(global,err_deallocate,__line__,'bvmTemp')
922  END IF ! global%error
923 
924 ! ==============================================================================
925 ! Write some info
926 ! ==============================================================================
927 
928  IF ( global%myProcid == masterproc .AND. &
929  global%verbLevel >= verbose_high ) THEN
930  WRITE(stdout,'(A,3X,A,I9)') solver_name, &
931  'Number of vertices:',pgrid%nBVert
932  END IF ! global%verbLevel
933 
934 ! ******************************************************************************
935 ! End
936 ! ******************************************************************************
937 
938  IF ( global%myProcid == masterproc .AND. &
939  global%verbLevel >= verbose_high ) THEN
940  WRITE(stdout,'(A,1X,A)') solver_name, &
941  'Building boundary-vertex master list done.'
942  END IF ! global%verbLevel
943 
944  CALL deregisterfunction(global)
945 
946  END SUBROUTINE rflu_buildbvertexmlist
947 
948 
949 
950 
951 
952 
953 
954 ! ******************************************************************************
955 !
956 ! Purpose: Create master boundary cell list.
957 !
958 ! Description: None.
959 !
960 ! Input:
961 ! pRegion Pointer to region
962 !
963 ! Output: None.
964 !
965 ! Notes:
966 ! 1. The dimension used in the allocation statement is only an estimate. This
967 ! estimate is guaranteed to be larger than the actual number of cells
968 ! which are adjacent to boundary faces.
969 ! 2. Only makes sense to build master boundary-cell list for serial cases, so
970 ! use nBFaces, not nBFacesTot for allocation.
971 !
972 ! ******************************************************************************
973 
974  SUBROUTINE rflu_createbcellmlist(pRegion)
975 
976  IMPLICIT NONE
977 
978 ! ******************************************************************************
979 ! Declarations and definitions
980 ! ******************************************************************************
981 
982 ! ==============================================================================
983 ! Arguments
984 ! ==============================================================================
985 
986  TYPE(t_region), POINTER :: pregion
987 
988 ! ==============================================================================
989 ! Locals
990 ! ==============================================================================
991 
992  INTEGER :: errorflag,ipatch,nbcells
993  TYPE(t_global), POINTER :: global
994  TYPE(t_grid), POINTER :: pgrid
995  TYPE(t_patch), POINTER :: ppatch
996 
997 ! ******************************************************************************
998 ! Start
999 ! ******************************************************************************
1000 
1001  global => pregion%global
1002 
1003  CALL registerfunction(global,'RFLU_CreateBCellMList',&
1004  'RFLU_ModBoundLists.F90')
1005 
1006  IF ( global%myProcid == masterproc .AND. &
1007  global%verbLevel >= verbose_high ) THEN
1008  WRITE(stdout,'(A,1X,A)') solver_name, &
1009  'Creating master boundary-cell list...'
1010  END IF ! global%verbLevel
1011 
1012 ! ******************************************************************************
1013 ! Nullify memory
1014 ! ******************************************************************************
1015 
1016  CALL rflu_nullifybcellmlist(pregion)
1017 
1018 ! ******************************************************************************
1019 ! Set grid pointer
1020 ! ******************************************************************************
1021 
1022  pgrid => pregion%grid
1023 
1024 ! ******************************************************************************
1025 ! Allocate memory
1026 ! ******************************************************************************
1027 
1028  pgrid%nBCells = 0
1029 
1030  nbcells = 0
1031 
1032  DO ipatch = 1,pgrid%nPatches
1033  ppatch => pregion%patches(ipatch)
1034 
1035  nbcells = nbcells + ppatch%nBFacesTot
1036  END DO ! iPatch
1037 
1038  ALLOCATE(pgrid%bcm(nbcells),stat=errorflag)
1039  global%error = errorflag
1040  IF ( global%error /= err_none ) THEN
1041  CALL errorstop(global,err_allocate,__line__,'pGrid%bcm')
1042  END IF ! global%error
1043 
1044 ! ******************************************************************************
1045 ! End
1046 ! ******************************************************************************
1047 
1048  IF ( global%myProcid == masterproc .AND. &
1049  global%verbLevel >= verbose_high ) THEN
1050  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
1051  'Creating master boundary-cell list done.'
1052  END IF ! global%verbLevel
1053 
1054  CALL deregisterfunction(global)
1055 
1056  END SUBROUTINE rflu_createbcellmlist
1057 
1058 
1059 
1060 
1061 
1062 
1063 
1064 ! ******************************************************************************
1065 !
1066 ! Purpose: Create local boundary face lists.
1067 !
1068 ! Description: None.
1069 !
1070 ! Input:
1071 ! pRegion Pointer to region
1072 !
1073 ! Output: None.
1074 !
1075 ! Notes: None.
1076 !
1077 ! ******************************************************************************
1078 
1079  SUBROUTINE rflu_createbfaceloclists(pRegion)
1080 
1081  IMPLICIT NONE
1082 
1083 ! ******************************************************************************
1084 ! Declarations and definitions
1085 ! ******************************************************************************
1086 
1087 ! ==============================================================================
1088 ! Arguments
1089 ! ==============================================================================
1090 
1091  TYPE(t_region), POINTER :: pregion
1092 
1093 ! ==============================================================================
1094 ! Locals
1095 ! ==============================================================================
1096 
1097  INTEGER :: errorflag,ipatch
1098  TYPE(t_global), POINTER :: global
1099  TYPE(t_grid), POINTER :: pgrid
1100  TYPE(t_patch), POINTER :: ppatch
1101 
1102 ! ******************************************************************************
1103 ! Start
1104 ! ******************************************************************************
1105 
1106  global => pregion%global
1107 
1108  CALL registerfunction(global,'RFLU_CreateBFaceLocLists',&
1109  'RFLU_ModBoundLists.F90')
1110 
1111  IF ( global%myProcid == masterproc .AND. &
1112  global%verbLevel >= verbose_high ) THEN
1113  WRITE(stdout,'(A,1X,A)') solver_name, &
1114  'Creating local boundary-face lists...'
1115  END IF ! global%verbLevel
1116 
1117 ! ******************************************************************************
1118 ! Nullify memory
1119 ! ******************************************************************************
1120 
1121  CALL rflu_nullifybfaceloclists(pregion)
1122 
1123 ! ******************************************************************************
1124 ! Set grid pointer
1125 ! ******************************************************************************
1126 
1127  pgrid => pregion%grid
1128 
1129 ! ******************************************************************************
1130 ! Create local boundary connectivity lists for each patch
1131 ! ******************************************************************************
1132 
1133  DO ipatch = 1,pregion%grid%nPatches
1134  ppatch => pregion%patches(ipatch)
1135 
1136  IF ( ppatch%nBTrisTot > 0 ) THEN
1137  ALLOCATE(ppatch%bTri2vLoc(3,ppatch%nBTrisTot),stat=errorflag)
1138  global%error = errorflag
1139  IF ( global%error /= err_none ) THEN
1140  CALL errorstop(global,err_allocate,__line__,'pPatch%bTri2vLoc')
1141  END IF ! global%error
1142  END IF ! pPatch%nBTris
1143 
1144  IF ( ppatch%nBQuadsTot > 0 ) THEN
1145  ALLOCATE(ppatch%bQuad2vLoc(4,ppatch%nBQuadsTot),stat=errorflag)
1146  global%error = errorflag
1147  IF ( global%error /= err_none ) THEN
1148  CALL errorstop(global,err_allocate,__line__,'pPatch%bQuad2vLoc')
1149  END IF ! global%error
1150  END IF ! pPatch%nBQuads
1151  END DO ! iPatch
1152 
1153 ! ******************************************************************************
1154 ! End
1155 ! ******************************************************************************
1156 
1157  IF ( global%myProcid == masterproc .AND. &
1158  global%verbLevel >= verbose_high ) THEN
1159  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
1160  'Creating local boundary-face lists done.'
1161  END IF ! global%verbLevel
1162 
1163  CALL deregisterfunction(global)
1164 
1165  END SUBROUTINE rflu_createbfaceloclists
1166 
1167 
1168 
1169 
1170 
1171 
1172 
1173 ! ******************************************************************************
1174 !
1175 ! Purpose: Create sorted boundary face lists.
1176 !
1177 ! Description: None.
1178 !
1179 ! Input:
1180 ! pRegion Pointer to region
1181 !
1182 ! Output: None.
1183 !
1184 ! Notes: None.
1185 !
1186 ! ******************************************************************************
1187 
1188  SUBROUTINE rflu_createbfacesortlists(pRegion)
1189 
1190  IMPLICIT NONE
1191 
1192 ! ******************************************************************************
1193 ! Declarations and definitions
1194 ! ******************************************************************************
1195 
1196 ! ==============================================================================
1197 ! Arguments
1198 ! ==============================================================================
1199 
1200  TYPE(t_region), POINTER :: pregion
1201 
1202 ! ==============================================================================
1203 ! Locals
1204 ! ==============================================================================
1205 
1206  INTEGER :: errorflag,ipatch
1207  TYPE(t_global), POINTER :: global
1208  TYPE(t_grid), POINTER :: pgrid
1209  TYPE(t_patch), POINTER :: ppatch
1210 
1211 ! ******************************************************************************
1212 ! Start
1213 ! ******************************************************************************
1214 
1215  global => pregion%global
1216 
1217  CALL registerfunction(global,'RFLU_CreateBFaceSortLists',&
1218  'RFLU_ModBoundLists.F90')
1219 
1220  IF ( global%myProcid == masterproc .AND. &
1221  global%verbLevel >= verbose_high ) THEN
1222  WRITE(stdout,'(A,1X,A)') solver_name, &
1223  'Creating sorted boundary-face lists...'
1224  END IF ! global%verbLevel
1225 
1226 ! ******************************************************************************
1227 ! Nullify memory
1228 ! ******************************************************************************
1229 
1230  CALL rflu_nullifybfacesortlists(pregion)
1231 
1232 ! ******************************************************************************
1233 ! Set grid pointer
1234 ! ******************************************************************************
1235 
1236  pgrid => pregion%grid
1237 
1238 ! ******************************************************************************
1239 ! Create local boundary connectivity lists for each patch
1240 ! ******************************************************************************
1241 
1242  DO ipatch = 1,pregion%grid%nPatches
1243  ppatch => pregion%patches(ipatch)
1244 
1245  ALLOCATE(ppatch%bf2cSorted(ppatch%nBFacesTot),stat=errorflag)
1246  global%error = errorflag
1247  IF ( global%error /= err_none ) THEN
1248  CALL errorstop(global,err_allocate,__line__,'pPatch%bf2cSorted')
1249  END IF ! global%error
1250  END DO ! iPatch
1251 
1252 ! ******************************************************************************
1253 ! End
1254 ! ******************************************************************************
1255 
1256  IF ( global%myProcid == masterproc .AND. &
1257  global%verbLevel >= verbose_high ) THEN
1258  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
1259  'Creating sorted boundary-face lists done.'
1260  END IF ! global%verbLevel
1261 
1262  CALL deregisterfunction(global)
1263 
1264  END SUBROUTINE rflu_createbfacesortlists
1265 
1266 
1267 
1268 
1269 
1270 
1271 
1272 ! ******************************************************************************
1273 !
1274 ! Purpose: Create boundary vertex lists.
1275 !
1276 ! Description: None.
1277 !
1278 ! Input:
1279 ! pRegion Pointer to region
1280 !
1281 ! Output: None.
1282 !
1283 ! Notes: None.
1284 !
1285 ! ******************************************************************************
1286 
1287  SUBROUTINE rflu_createbvertexlists(pRegion)
1288 
1289  IMPLICIT NONE
1290 
1291 ! ******************************************************************************
1292 ! Declarations and definitions
1293 ! ******************************************************************************
1294 
1295 ! ==============================================================================
1296 ! Arguments
1297 ! ==============================================================================
1298 
1299  TYPE(t_region), POINTER :: pregion
1300 
1301 ! ==============================================================================
1302 ! Locals
1303 ! ==============================================================================
1304 
1305  INTEGER :: errorflag,ibv,ipatch
1306  TYPE(t_global), POINTER :: global
1307  TYPE(t_grid), POINTER :: pgrid
1308  TYPE(t_patch), POINTER :: ppatch
1309 
1310 ! ******************************************************************************
1311 ! Start
1312 ! ******************************************************************************
1313 
1314  global => pregion%global
1315 
1316  CALL registerfunction(global,'RFLU_CreateBVertexLists',&
1317  'RFLU_ModBoundLists.F90')
1318 
1319  IF ( global%myProcid == masterproc .AND. &
1320  global%verbLevel >= verbose_high ) THEN
1321  WRITE(stdout,'(A,1X,A)') solver_name,'Creating boundary vertex lists...'
1322  END IF ! global%verbLevel
1323 
1324 ! ******************************************************************************
1325 ! Nullify memory
1326 ! ******************************************************************************
1327 
1328  CALL rflu_nullifybvertexlists(pregion)
1329 
1330 ! ******************************************************************************
1331 ! Set grid pointer
1332 ! ******************************************************************************
1333 
1334  pgrid => pregion%grid
1335 
1336 ! ******************************************************************************
1337 ! Create list of boundary vertices for each patch
1338 ! ******************************************************************************
1339 
1340  DO ipatch = 1,pregion%grid%nPatches
1341  ppatch => pregion%patches(ipatch)
1342 
1343 ! ==============================================================================
1344 ! Estimate number of boundary vertices
1345 ! ==============================================================================
1346 
1347  SELECT CASE ( pregion%mixtInput%dimens )
1348  CASE ( 1 )
1349  ppatch%nBVertEst = 2*ppatch%nBQuadsTot + 2
1350  CASE ( 2 )
1351  IF ( ppatch%bcType /= bc_virtual ) THEN
1352  ppatch%nBVertEst = 2*ppatch%nBQuadsTot + 2
1353  ELSE
1354  ppatch%nBVertEst = 4*(ppatch%nBTrisTot/2 + ppatch%nBQuadsTot)
1355  END IF ! pPatch%bcType
1356  CASE ( 3 )
1357  ppatch%nBVertEst = 2*(ppatch%nBTrisTot/2 + ppatch%nBQuadsTot)
1358 
1359  IF ( ppatch%nBVertEst < 100 ) THEN ! Kludge
1360  ppatch%nBVertEst = 100 + 4*ppatch%nBVertEst
1361  ELSE IF ( ppatch%nBVertEst < 1000 ) THEN
1362  ppatch%nBVertEst = 2*ppatch%nBVertEst
1363  END IF ! pPatch%nBVertEst
1364  CASE default
1365  CALL errorstop(global,err_reached_default,__line__)
1366  END SELECT ! pRegion%mixtInput%dimens
1367 
1368 ! ==============================================================================
1369 ! Allocate memory for temporary boundary vertex array
1370 ! ==============================================================================
1371 
1372  ALLOCATE(ppatch%bvTemp(ppatch%nBVertEst),stat=errorflag)
1373  global%error = errorflag
1374  IF ( global%error /= err_none ) THEN
1375  CALL errorstop(global,err_allocate,__line__,'pPatch%bvTemp')
1376  END IF ! global%error
1377 
1378  DO ibv = 1,ppatch%nBVertEst
1379  ppatch%bvTemp(ibv) = 0
1380  END DO ! ibv
1381  END DO ! iPatch
1382 
1383 ! ******************************************************************************
1384 ! End
1385 ! ******************************************************************************
1386 
1387  IF ( global%myProcid == masterproc .AND. &
1388  global%verbLevel >= verbose_high ) THEN
1389  WRITE(stdout,'(A,1X,A,1X,A)') solver_name,'Creating boundary vertex', &
1390  'lists done.'
1391  END IF ! global%verbLevel
1392 
1393  CALL deregisterfunction(global)
1394 
1395  END SUBROUTINE rflu_createbvertexlists
1396 
1397 
1398 
1399 
1400 
1401 
1402 
1403 
1404 ! ******************************************************************************
1405 !
1406 ! Purpose: Create boundary vertex master list.
1407 !
1408 ! Description: None.
1409 !
1410 ! Input:
1411 ! pRegion Pointer to region
1412 !
1413 ! Output: None.
1414 !
1415 ! Notes: None.
1416 !
1417 ! ******************************************************************************
1418 
1419  SUBROUTINE rflu_createbvertexmlist(pRegion)
1420 
1421  IMPLICIT NONE
1422 
1423 ! ******************************************************************************
1424 ! Declarations and definitions
1425 ! ******************************************************************************
1426 
1427 ! ==============================================================================
1428 ! Arguments
1429 ! ==============================================================================
1430 
1431  TYPE(t_region), POINTER :: pregion
1432 
1433 ! ==============================================================================
1434 ! Locals
1435 ! ==============================================================================
1436 
1437  INTEGER :: errorflag,ipatch
1438  TYPE(t_global), POINTER :: global
1439  TYPE(t_grid), POINTER :: pgrid
1440  TYPE(t_patch), POINTER :: ppatch
1441 
1442 ! ******************************************************************************
1443 ! Start
1444 ! ******************************************************************************
1445 
1446  global => pregion%global
1447 
1448  CALL registerfunction(global,'RFLU_CreateBVertexMList',&
1449  'RFLU_ModBoundLists.F90')
1450 
1451  IF ( global%myProcid == masterproc .AND. &
1452  global%verbLevel >= verbose_high ) THEN
1453  WRITE(stdout,'(A,1X,A)') solver_name, &
1454  'Creating boundary vertex master list...'
1455  END IF ! global%verbLevel
1456 
1457 ! ******************************************************************************
1458 ! Nullify memory
1459 ! ******************************************************************************
1460 
1461  CALL rflu_nullifybvertexmlist(pregion)
1462 
1463 ! ******************************************************************************
1464 ! Set grid pointer
1465 ! ******************************************************************************
1466 
1467  pgrid => pregion%grid
1468 
1469 ! ******************************************************************************
1470 ! Allocate memory
1471 ! ******************************************************************************
1472 
1473  pgrid%nBVertEst = 0
1474 
1475  DO ipatch = 1,pregion%grid%nPatches
1476  ppatch => pregion%patches(ipatch)
1477 
1478  pgrid%nBVertEst = pgrid%nBVertEst + ppatch%nBVertTot
1479  END DO ! iPatch
1480 
1481  ALLOCATE(pgrid%bvm(pgrid%nBVertEst),stat=errorflag)
1482  global%error = errorflag
1483  IF ( global%error /= err_none ) THEN
1484  CALL errorstop(global,err_allocate,__line__,'pGrid%bvm')
1485  END IF ! global%error
1486 
1487 ! ******************************************************************************
1488 ! End
1489 ! ******************************************************************************
1490 
1491  IF ( global%myProcid == masterproc .AND. &
1492  global%verbLevel >= verbose_high ) THEN
1493  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
1494  'Creating master boundary vertex list done.'
1495  END IF ! global%verbLevel
1496 
1497  CALL deregisterfunction(global)
1498 
1499  END SUBROUTINE rflu_createbvertexmlist
1500 
1501 
1502 
1503 
1504 
1505 
1506 
1507 ! ******************************************************************************
1508 !
1509 ! Purpose: Denumber combined boundary face list.
1510 !
1511 ! Description: None.
1512 !
1513 ! Input:
1514 ! pRegion Pointer to region
1515 !
1516 ! Output: None.
1517 !
1518 ! Notes: None.
1519 !
1520 ! ******************************************************************************
1521 
1522  SUBROUTINE rflu_denumberbfacelists(pRegion)
1523 
1524  IMPLICIT NONE
1525 
1526 ! ******************************************************************************
1527 ! Declarations and definitions
1528 ! ******************************************************************************
1529 
1530 ! ==============================================================================
1531 ! Arguments
1532 ! ==============================================================================
1533 
1534  TYPE(t_region), POINTER :: pregion
1535 
1536 ! ==============================================================================
1537 ! Locals
1538 ! ==============================================================================
1539 
1540  INTEGER :: errorflag,ifl,ipatch
1541  TYPE(t_global), POINTER :: global
1542  TYPE(t_grid), POINTER :: pgrid
1543  TYPE(t_patch), POINTER :: ppatch
1544 
1545 ! ******************************************************************************
1546 ! Start
1547 ! ******************************************************************************
1548 
1549  global => pregion%global
1550 
1551  CALL registerfunction(global,'RFLU_DenumberBFaceLists',&
1552  'RFLU_ModBoundLists.F90')
1553 
1554  IF ( global%myProcid == masterproc .AND. &
1555  global%verbLevel >= verbose_high ) THEN
1556  WRITE(stdout,'(A,1X,A)') solver_name, &
1557  'Denumbering boundary-face lists...'
1558  END IF ! global%verbLevel
1559 
1560 ! ******************************************************************************
1561 ! Loop over patches
1562 ! ******************************************************************************
1563 
1564  pgrid => pregion%grid
1565 
1566  DO ipatch = 1,pgrid%nPatches
1567  ppatch => pregion%patches(ipatch)
1568 
1569  IF ( global%myProcid == masterproc .AND. &
1570  global%verbLevel >= verbose_high) THEN
1571  WRITE(stdout,'(A,3X,A,1X,I3)') solver_name,'Patch:',ipatch
1572  END IF ! global%verbLevel
1573 
1574 ! ==============================================================================
1575 ! Check renumbering flag
1576 ! ==============================================================================
1577 
1578  IF ( ppatch%renumFlag .EQV. .false. ) THEN
1579  global%warnCounter = global%warnCounter + 1
1580 
1581  IF ( global%myProcid == masterproc .AND. &
1582  global%verbLevel >= verbose_none ) THEN
1583  WRITE(stdout,'(A,5X,A,1X,A)') solver_name, &
1584  '*** WARNING *** Patch already denumbered. Skipping denumbering.'
1585  cycle
1586  END IF ! global
1587  END IF ! pPatch%renumFlag
1588 
1589 ! ==============================================================================
1590 ! Actual faces
1591 ! ==============================================================================
1592 
1593  IF ( global%myProcid == masterproc .AND. &
1594  global%verbLevel >= verbose_high) THEN
1595  WRITE(stdout,'(A,5X,A)') solver_name,'Actual faces...'
1596  END IF ! global%verbLevel
1597 
1598  CALL rflu_denumberlist(global,4,ppatch%nBFaces, &
1599  ppatch%bf2v(1:4,1:ppatch%nBFaces), &
1600  ppatch%nBVert,ppatch%bv(1:ppatch%nBVert))
1601 
1602 ! ==============================================================================
1603 ! Virtual faces
1604 ! ==============================================================================
1605 
1606  IF ( ppatch%nBFacesTot > ppatch%nBFaces .AND. &
1607  global%myProcid == masterproc .AND. &
1608  global%verbLevel >= verbose_high) THEN
1609  WRITE(stdout,'(A,5X,A)') solver_name,'Virtual faces...'
1610  END IF ! global%verbLevel
1611 
1612  IF ( ppatch%nBFacesTot > ppatch%nBFaces ) THEN
1613  CALL rflu_denumberlist(global,4,ppatch%nBFacesTot-ppatch%nBFaces, &
1614  ppatch%bf2v(1:4,ppatch%nBFaces+1:ppatch%nBFacesTot), &
1615  ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
1616  END IF ! pPatch%nBFaces
1617 
1618 ! ==============================================================================
1619 ! Set renumbering flag
1620 ! ==============================================================================
1621 
1622  ppatch%renumFlag = .false.
1623  END DO ! iPatch
1624 
1625 #ifdef CHECK_DATASTRUCT
1626 ! ******************************************************************************
1627 ! Data structure output for checking
1628 ! ******************************************************************************
1629 
1630  IF ( pgrid%nPatches > 0 ) THEN
1631  WRITE(stdout,'(A)') solver_name
1632  WRITE(stdout,'(A,1X,A)') solver_name,'### START CHECK OUTPUT ###'
1633  WRITE(stdout,'(A,1X,A,A)') solver_name,'Globally-numbered boundary ', &
1634  'face lists:'
1635  DO ipatch = 1,pgrid%nPatches
1636  ppatch => pregion%patches(ipatch)
1637 
1638  WRITE(stdout,'(A,1X,A,1X,I3,3X,A)') solver_name,'Boundary:', &
1639  ipatch,trim(ppatch%bcName)
1640  WRITE(stdout,'(A,1X,A,1X,I7)') solver_name, &
1641  'Actual number of faces:', &
1642  ppatch%nBFaces
1643  WRITE(stdout,'(A,1X,A,1X,I7)') solver_name, &
1644  'Total number of faces: ', &
1645  ppatch%nBFacesTot
1646  DO ifl = 1,ppatch%nBFacesTot
1647  WRITE(stdout,'(A,5(1X,I7))') solver_name,ifl,ppatch%bf2v(1:4,ifl)
1648  END DO ! ifl
1649  END DO ! iPatch
1650  WRITE(stdout,'(A,1X,A)') solver_name,'### END CHECK OUTPUT ###'
1651  WRITE(stdout,'(A)') solver_name
1652  END IF ! pGrid%nPatches
1653 #endif
1654 
1655 ! ******************************************************************************
1656 ! End
1657 ! ******************************************************************************
1658 
1659  IF ( global%myProcid == masterproc .AND. &
1660  global%verbLevel >= verbose_high ) THEN
1661  WRITE(stdout,'(A,1X,A)') solver_name, &
1662  'Denumbering boundary-face lists done.'
1663  END IF ! global%verbLevel
1664 
1665  CALL deregisterfunction(global)
1666 
1667  END SUBROUTINE rflu_denumberbfacelists
1668 
1669 
1670 
1671 
1672 
1673 
1674 
1675 ! ******************************************************************************
1676 !
1677 ! Purpose: Destroy master boundary-cell lists.
1678 !
1679 ! Description: None.
1680 !
1681 ! Input:
1682 ! pRegion Pointer to region
1683 !
1684 ! Output: None.
1685 !
1686 ! Notes: None.
1687 !
1688 ! ******************************************************************************
1689 
1690  SUBROUTINE rflu_destroybcellmlist(pRegion)
1691 
1692  IMPLICIT NONE
1693 
1694 ! ******************************************************************************
1695 ! Declarations and definitions
1696 ! ******************************************************************************
1697 
1698 ! ==============================================================================
1699 ! Arguments
1700 ! ==============================================================================
1701 
1702  TYPE(t_region), POINTER :: pregion
1703 
1704 ! ==============================================================================
1705 ! Locals
1706 ! ==============================================================================
1707 
1708  INTEGER :: errorflag
1709  TYPE(t_global), POINTER :: global
1710  TYPE(t_grid), POINTER :: pgrid
1711 
1712 ! ******************************************************************************
1713 ! Start
1714 ! ******************************************************************************
1715 
1716  global => pregion%global
1717 
1718  CALL registerfunction(global,'RFLU_DestroyBCellMList',&
1719  'RFLU_ModBoundLists.F90')
1720 
1721  IF ( global%myProcid == masterproc .AND. &
1722  global%verbLevel >= verbose_high ) THEN
1723  WRITE(stdout,'(A,1X,A)') solver_name, &
1724  'Destroying master boundary-cell list...'
1725  END IF ! global%verbLevel
1726 
1727 ! ******************************************************************************
1728 ! Set grid pointer
1729 ! ******************************************************************************
1730 
1731  pgrid => pregion%grid
1732 
1733 ! ******************************************************************************
1734 ! Create local boundary connectivity lists for each patch
1735 ! ******************************************************************************
1736 
1737  DEALLOCATE(pgrid%bcm,stat=errorflag)
1738  global%error = errorflag
1739  IF ( global%error /= err_none ) THEN
1740  CALL errorstop(global,err_deallocate,__line__,'pGrid%bcm')
1741  END IF ! global%error
1742 
1743 ! ******************************************************************************
1744 ! Nullify memory
1745 ! ******************************************************************************
1746 
1747  CALL rflu_nullifybcellmlist(pregion)
1748 
1749 ! ******************************************************************************
1750 ! End
1751 ! ******************************************************************************
1752 
1753  IF ( global%myProcid == masterproc .AND. &
1754  global%verbLevel >= verbose_high ) THEN
1755  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
1756  'Destroying master boundary-cell list done.'
1757  END IF ! global%verbLevel
1758 
1759  CALL deregisterfunction(global)
1760 
1761  END SUBROUTINE rflu_destroybcellmlist
1762 
1763 
1764 
1765 
1766 
1767 
1768 
1769 
1770 ! ******************************************************************************
1771 !
1772 ! Purpose: Destroy local boundary face lists.
1773 !
1774 ! Description: None.
1775 !
1776 ! Input:
1777 ! pRegion Pointer to region
1778 !
1779 ! Output: None.
1780 !
1781 ! Notes: None.
1782 !
1783 ! ******************************************************************************
1784 
1785  SUBROUTINE rflu_destroybfaceloclists(pRegion)
1786 
1787  IMPLICIT NONE
1788 
1789 ! ******************************************************************************
1790 ! Declarations and definitions
1791 ! ******************************************************************************
1792 
1793 ! ==============================================================================
1794 ! Arguments
1795 ! ==============================================================================
1796 
1797  TYPE(t_region), POINTER :: pregion
1798 
1799 ! ==============================================================================
1800 ! Locals
1801 ! ==============================================================================
1802 
1803  INTEGER :: errorflag,ipatch
1804  TYPE(t_global), POINTER :: global
1805  TYPE(t_grid), POINTER :: pgrid
1806  TYPE(t_patch), POINTER :: ppatch
1807 
1808 ! ******************************************************************************
1809 ! Start
1810 ! ******************************************************************************
1811 
1812  global => pregion%global
1813 
1814  CALL registerfunction(global,'RFLU_DestroyBFaceLocLists',&
1815  'RFLU_ModBoundLists.F90')
1816 
1817  IF ( global%myProcid == masterproc .AND. &
1818  global%verbLevel >= verbose_high ) THEN
1819  WRITE(stdout,'(A,1X,A)') solver_name, &
1820  'Destroying local boundary-face lists...'
1821  END IF ! global%verbLevel
1822 
1823 ! ******************************************************************************
1824 ! Set grid pointer
1825 ! ******************************************************************************
1826 
1827  pgrid => pregion%grid
1828 
1829 ! ******************************************************************************
1830 ! Create local boundary connectivity lists for each patch
1831 ! ******************************************************************************
1832 
1833  DO ipatch = 1,pregion%grid%nPatches
1834  ppatch => pregion%patches(ipatch)
1835 
1836  IF ( ppatch%nBTrisTot > 0 ) THEN
1837  DEALLOCATE(ppatch%bTri2vLoc,stat=errorflag)
1838  global%error = errorflag
1839  IF ( global%error /= err_none ) THEN
1840  CALL errorstop(global,err_deallocate,__line__,'pPatch%bTri2vLoc')
1841  END IF ! global%error
1842  END IF ! pPatch%nBTris
1843 
1844  IF ( ppatch%nBQuadsTot > 0 ) THEN
1845  DEALLOCATE(ppatch%bQuad2vLoc,stat=errorflag)
1846  global%error = errorflag
1847  IF ( global%error /= err_none ) THEN
1848  CALL errorstop(global,err_deallocate,__line__,'pPatch%bQuad2vLoc')
1849  END IF ! global%error
1850  END IF ! pPatch%nBQuads
1851  END DO ! iPatch
1852 
1853 ! ******************************************************************************
1854 ! Nullify memory
1855 ! ******************************************************************************
1856 
1857  CALL rflu_nullifybfaceloclists(pregion)
1858 
1859 ! ******************************************************************************
1860 ! End
1861 ! ******************************************************************************
1862 
1863  IF ( global%myProcid == masterproc .AND. &
1864  global%verbLevel >= verbose_high ) THEN
1865  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
1866  'Destroying local boundary-face lists done.'
1867  END IF ! global%verbLevel
1868 
1869  CALL deregisterfunction(global)
1870 
1871  END SUBROUTINE rflu_destroybfaceloclists
1872 
1873 
1874 
1875 
1876 
1877 
1878 
1879 
1880 ! ******************************************************************************
1881 !
1882 ! Purpose: Destroy sorted boundary face lists.
1883 !
1884 ! Description: None.
1885 !
1886 ! Input:
1887 ! pRegion Pointer to region
1888 !
1889 ! Output: None.
1890 !
1891 ! Notes: None.
1892 !
1893 ! ******************************************************************************
1894 
1895  SUBROUTINE rflu_destroybfacesortlists(pRegion)
1896 
1897  IMPLICIT NONE
1898 
1899 ! ******************************************************************************
1900 ! Declarations and definitions
1901 ! ******************************************************************************
1902 
1903 ! ==============================================================================
1904 ! Arguments
1905 ! ==============================================================================
1906 
1907  TYPE(t_region), POINTER :: pregion
1908 
1909 ! ==============================================================================
1910 ! Locals
1911 ! ==============================================================================
1912 
1913  INTEGER :: errorflag,ipatch
1914  TYPE(t_global), POINTER :: global
1915  TYPE(t_grid), POINTER :: pgrid
1916  TYPE(t_patch), POINTER :: ppatch
1917 
1918 ! ******************************************************************************
1919 ! Start
1920 ! ******************************************************************************
1921 
1922  global => pregion%global
1923 
1924  CALL registerfunction(global,'RFLU_DestroyBFaceSortLists',&
1925  'RFLU_ModBoundLists.F90')
1926 
1927  IF ( global%myProcid == masterproc .AND. &
1928  global%verbLevel >= verbose_high ) THEN
1929  WRITE(stdout,'(A,1X,A)') solver_name, &
1930  'Destroying sorted boundary-face lists...'
1931  END IF ! global%verbLevel
1932 
1933 ! ******************************************************************************
1934 ! Set grid pointer
1935 ! ******************************************************************************
1936 
1937  pgrid => pregion%grid
1938 
1939 ! ******************************************************************************
1940 ! Create local boundary connectivity lists for each patch
1941 ! ******************************************************************************
1942 
1943  DO ipatch = 1,pregion%grid%nPatches
1944  ppatch => pregion%patches(ipatch)
1945 
1946  DEALLOCATE(ppatch%bf2cSorted,stat=errorflag)
1947  global%error = errorflag
1948  IF ( global%error /= err_none ) THEN
1949  CALL errorstop(global,err_deallocate,__line__,'pPatch%bf2cSorted')
1950  END IF ! global%error
1951  END DO ! iPatch
1952 
1953 ! ******************************************************************************
1954 ! Nullify memory
1955 ! ******************************************************************************
1956 
1957  CALL rflu_nullifybfacesortlists(pregion)
1958 
1959 ! ******************************************************************************
1960 ! End
1961 ! ******************************************************************************
1962 
1963  IF ( global%myProcid == masterproc .AND. &
1964  global%verbLevel >= verbose_high ) THEN
1965  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
1966  'Destroying sorted boundary-face lists done.'
1967  END IF ! global%verbLevel
1968 
1969  CALL deregisterfunction(global)
1970 
1971  END SUBROUTINE rflu_destroybfacesortlists
1972 
1973 
1974 
1975 
1976 
1977 
1978 
1979 ! ******************************************************************************
1980 !
1981 ! Purpose: Destroy boundary lists.
1982 !
1983 ! Description: None.
1984 !
1985 ! Input:
1986 ! pRegion Pointer to region
1987 !
1988 ! Output: None.
1989 !
1990 ! Notes: None.
1991 !
1992 ! ******************************************************************************
1993 
1994  SUBROUTINE rflu_destroybvertexlists(pRegion)
1995 
1996  IMPLICIT NONE
1997 
1998 ! ******************************************************************************
1999 ! Declarations and definitions
2000 ! ******************************************************************************
2001 
2002 ! ==============================================================================
2003 ! Arguments
2004 ! ==============================================================================
2005 
2006  TYPE(t_region), POINTER :: pregion
2007 
2008 ! ==============================================================================
2009 ! Locals
2010 ! ==============================================================================
2011 
2012  INTEGER :: errorflag,ipatch
2013  TYPE(t_grid), POINTER :: pgrid
2014  TYPE(t_patch), POINTER :: ppatch
2015  TYPE(t_global), POINTER :: global
2016 
2017 ! ******************************************************************************
2018 ! Start
2019 ! ******************************************************************************
2020 
2021  global => pregion%global
2022 
2023  CALL registerfunction(global,'RFLU_DestroyBoundLists',&
2024  'RFLU_ModBoundLists.F90')
2025 
2026  IF ( global%myProcid == masterproc .AND. &
2027  global%verbLevel >= verbose_high ) THEN
2028  WRITE(stdout,'(A,1X,A)') solver_name, &
2029  'Destroying boundary-vertex lists...'
2030  END IF ! global%verbLevel
2031 
2032 ! ******************************************************************************
2033 ! Set grid pointer
2034 ! ******************************************************************************
2035 
2036  pgrid => pregion%grid
2037 
2038 ! ******************************************************************************
2039 ! Loop over patches
2040 ! ******************************************************************************
2041 
2042  DO ipatch = 1,pgrid%nPatches
2043  ppatch => pregion%patches(ipatch)
2044 
2045  DEALLOCATE(ppatch%bv,stat=errorflag)
2046  global%error = errorflag
2047  IF ( global%error /= err_none ) THEN
2048  CALL errorstop(global,err_deallocate,__line__,'pPatch%bv')
2049  END IF ! global%error
2050  END DO ! iPatch
2051 
2052 ! ******************************************************************************
2053 ! Nullify memory
2054 ! ******************************************************************************
2055 
2056  CALL rflu_nullifybvertexlists(pregion)
2057 
2058 ! ******************************************************************************
2059 ! End
2060 ! ******************************************************************************
2061 
2062  IF ( global%myProcid == masterproc .AND. &
2063  global%verbLevel >= verbose_high ) THEN
2064  WRITE(stdout,'(A,1X,A)') solver_name, &
2065  'Destroying boundary-vertex lists done.'
2066  END IF ! global%verbLevel
2067 
2068  CALL deregisterfunction(global)
2069 
2070  END SUBROUTINE rflu_destroybvertexlists
2071 
2072 
2073 
2074 
2075 
2076 
2077 ! ******************************************************************************
2078 !
2079 ! Purpose: Destroy boundary vertex master list.
2080 !
2081 ! Description: None.
2082 !
2083 ! Input:
2084 ! pRegion Pointer to region
2085 !
2086 ! Output: None.
2087 !
2088 ! Notes: None.
2089 !
2090 ! ******************************************************************************
2091 
2092  SUBROUTINE rflu_destroybvertexmlist(pRegion)
2093 
2094  IMPLICIT NONE
2095 
2096 ! ******************************************************************************
2097 ! Declarations and definitions
2098 ! ******************************************************************************
2099 
2100 ! ==============================================================================
2101 ! Arguments
2102 ! ==============================================================================
2103 
2104  TYPE(t_region), POINTER :: pregion
2105 
2106 ! ==============================================================================
2107 ! Locals
2108 ! ==============================================================================
2109 
2110  INTEGER :: errorflag,ipatch
2111  TYPE(t_grid), POINTER :: pgrid
2112  TYPE(t_patch), POINTER :: ppatch
2113  TYPE(t_global), POINTER :: global
2114 
2115 ! ******************************************************************************
2116 ! Start
2117 ! ******************************************************************************
2118 
2119  global => pregion%global
2120 
2121  CALL registerfunction(global,'RFLU_DestroyBVertexMList',&
2122  'RFLU_ModBoundLists.F90')
2123 
2124  IF ( global%myProcid == masterproc .AND. &
2125  global%verbLevel >= verbose_high ) THEN
2126  WRITE(stdout,'(A,1X,A)') solver_name, &
2127  'Destroying boundary-vertex master list...'
2128  END IF ! global%verbLevel
2129 
2130 ! ******************************************************************************
2131 ! Set grid pointer
2132 ! ******************************************************************************
2133 
2134  pgrid => pregion%grid
2135 
2136 ! ******************************************************************************
2137 ! Destroy list
2138 ! ******************************************************************************
2139 
2140  DEALLOCATE(pgrid%bvm,stat=errorflag)
2141  global%error = errorflag
2142  IF ( global%error /= err_none ) THEN
2143  CALL errorstop(global,err_deallocate,__line__,'pGrid%bvm')
2144  END IF ! global%error
2145 
2146 ! ******************************************************************************
2147 ! Nullify memory
2148 ! ******************************************************************************
2149 
2150  CALL rflu_nullifybvertexmlist(pregion)
2151 
2152 ! ******************************************************************************
2153 ! End
2154 ! ******************************************************************************
2155 
2156  IF ( global%myProcid == masterproc .AND. &
2157  global%verbLevel >= verbose_high ) THEN
2158  WRITE(stdout,'(A,1X,A)') solver_name, &
2159  'Destroying boundary-vertex master list done.'
2160  END IF ! global%verbLevel
2161 
2162  CALL deregisterfunction(global)
2163 
2164  END SUBROUTINE rflu_destroybvertexmlist
2165 
2166 
2167 
2168 
2169 
2170 
2171 
2172 ! ******************************************************************************
2173 !
2174 ! Purpose: Nullify master boundary-cell lists.
2175 !
2176 ! Description: None.
2177 !
2178 ! Input:
2179 ! pRegion Pointer to region
2180 !
2181 ! Output: None.
2182 !
2183 ! Notes: None.
2184 !
2185 ! ******************************************************************************
2186 
2187  SUBROUTINE rflu_nullifybcellmlist(pRegion)
2188 
2189  IMPLICIT NONE
2190 
2191 ! ******************************************************************************
2192 ! Declarations and definitions
2193 ! ******************************************************************************
2194 
2195 ! ==============================================================================
2196 ! Arguments
2197 ! ==============================================================================
2198 
2199  TYPE(t_region), POINTER :: pregion
2200 
2201 ! ==============================================================================
2202 ! Locals
2203 ! ==============================================================================
2204 
2205  TYPE(t_global), POINTER :: global
2206  TYPE(t_grid), POINTER :: pgrid
2207 
2208 ! ******************************************************************************
2209 ! Start
2210 ! ******************************************************************************
2211 
2212  global => pregion%global
2213 
2214  CALL registerfunction(global,'RFLU_NullifyBCellMList',&
2215  'RFLU_ModBoundLists.F90')
2216 
2217  IF ( global%myProcid == masterproc .AND. &
2218  global%verbLevel >= verbose_high ) THEN
2219  WRITE(stdout,'(A,1X,A)') solver_name, &
2220  'Nullifying master boundary-cell list...'
2221  END IF ! global%verbLevel
2222 
2223 ! ******************************************************************************
2224 ! Set grid pointer
2225 ! ******************************************************************************
2226 
2227  pgrid => pregion%grid
2228 
2229 ! ******************************************************************************
2230 ! Nullify memory
2231 ! ******************************************************************************
2232 
2233  nullify(pgrid%bcm)
2234 
2235 ! ******************************************************************************
2236 ! End
2237 ! ******************************************************************************
2238 
2239  IF ( global%myProcid == masterproc .AND. &
2240  global%verbLevel >= verbose_high ) THEN
2241  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
2242  'Nullifying master boundary-cell list done.'
2243  END IF ! global%verbLevel
2244 
2245  CALL deregisterfunction(global)
2246 
2247  END SUBROUTINE rflu_nullifybcellmlist
2248 
2249 
2250 
2251 
2252 
2253 
2254 
2255 ! ******************************************************************************
2256 !
2257 ! Purpose: Nullify local boundary-face lists.
2258 !
2259 ! Description: None.
2260 !
2261 ! Input:
2262 ! pRegion Pointer to region
2263 !
2264 ! Output: None.
2265 !
2266 ! Notes: None.
2267 !
2268 ! ******************************************************************************
2269 
2270  SUBROUTINE rflu_nullifybfaceloclists(pRegion)
2271 
2272  IMPLICIT NONE
2273 
2274 ! ******************************************************************************
2275 ! Declarations and definitions
2276 ! ******************************************************************************
2277 
2278 ! ==============================================================================
2279 ! Arguments
2280 ! ==============================================================================
2281 
2282  TYPE(t_region), POINTER :: pregion
2283 
2284 ! ==============================================================================
2285 ! Locals
2286 ! ==============================================================================
2287 
2288  INTEGER :: ipatch
2289  TYPE(t_global), POINTER :: global
2290  TYPE(t_grid), POINTER :: pgrid
2291  TYPE(t_patch), POINTER :: ppatch
2292 
2293 ! ******************************************************************************
2294 ! Start
2295 ! ******************************************************************************
2296 
2297  global => pregion%global
2298 
2299  CALL registerfunction(global,'RFLU_NullifyBFaceLocLists',&
2300  'RFLU_ModBoundLists.F90')
2301 
2302  IF ( global%myProcid == masterproc .AND. &
2303  global%verbLevel >= verbose_high ) THEN
2304  WRITE(stdout,'(A,1X,A)') solver_name, &
2305  'Nullifying local boundary-face lists...'
2306  END IF ! global%verbLevel
2307 
2308 ! ******************************************************************************
2309 ! Set grid pointer
2310 ! ******************************************************************************
2311 
2312  pgrid => pregion%grid
2313 
2314 ! ******************************************************************************
2315 ! Nullify memory
2316 ! ******************************************************************************
2317 
2318  DO ipatch = 1,pregion%grid%nPatches
2319  ppatch => pregion%patches(ipatch)
2320 
2321  nullify(ppatch%bTri2vLoc)
2322  nullify(ppatch%bQuad2vLoc)
2323  END DO ! iPatch
2324 
2325 ! ******************************************************************************
2326 ! End
2327 ! ******************************************************************************
2328 
2329  IF ( global%myProcid == masterproc .AND. &
2330  global%verbLevel >= verbose_high ) THEN
2331  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
2332  'Nullifying local boundary-face lists done.'
2333  END IF ! global%verbLevel
2334 
2335  CALL deregisterfunction(global)
2336 
2337  END SUBROUTINE rflu_nullifybfaceloclists
2338 
2339 
2340 
2341 
2342 
2343 
2344 
2345 
2346 
2347 ! ******************************************************************************
2348 !
2349 ! Purpose: Nullify sorted boundary-face lists.
2350 !
2351 ! Description: None.
2352 !
2353 ! Input:
2354 ! pRegion Pointer to region
2355 !
2356 ! Output: None.
2357 !
2358 ! Notes: None.
2359 !
2360 ! ******************************************************************************
2361 
2362  SUBROUTINE rflu_nullifybfacesortlists(pRegion)
2363 
2364  IMPLICIT NONE
2365 
2366 ! ******************************************************************************
2367 ! Declarations and definitions
2368 ! ******************************************************************************
2369 
2370 ! ==============================================================================
2371 ! Arguments
2372 ! ==============================================================================
2373 
2374  TYPE(t_region), POINTER :: pregion
2375 
2376 ! ==============================================================================
2377 ! Locals
2378 ! ==============================================================================
2379 
2380  INTEGER :: ipatch
2381  TYPE(t_global), POINTER :: global
2382  TYPE(t_grid), POINTER :: pgrid
2383  TYPE(t_patch), POINTER :: ppatch
2384 
2385 ! ******************************************************************************
2386 ! Start
2387 ! ******************************************************************************
2388 
2389  global => pregion%global
2390 
2391  CALL registerfunction(global,'RFLU_NullifyBFaceSortLists',&
2392  'RFLU_ModBoundLists.F90')
2393 
2394  IF ( global%myProcid == masterproc .AND. &
2395  global%verbLevel >= verbose_high ) THEN
2396  WRITE(stdout,'(A,1X,A)') solver_name, &
2397  'Nullifying sorted boundary-face lists...'
2398  END IF ! global%verbLevel
2399 
2400 ! ******************************************************************************
2401 ! Set grid pointer
2402 ! ******************************************************************************
2403 
2404  pgrid => pregion%grid
2405 
2406 ! ******************************************************************************
2407 ! Nullify memory
2408 ! ******************************************************************************
2409 
2410  DO ipatch = 1,pregion%grid%nPatches
2411  ppatch => pregion%patches(ipatch)
2412 
2413  nullify(ppatch%bf2cSorted)
2414  END DO ! iPatch
2415 
2416 ! ******************************************************************************
2417 ! End
2418 ! ******************************************************************************
2419 
2420  IF ( global%myProcid == masterproc .AND. &
2421  global%verbLevel >= verbose_high ) THEN
2422  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
2423  'Nullifying sorted boundary-face lists done.'
2424  END IF ! global%verbLevel
2425 
2426  CALL deregisterfunction(global)
2427 
2428  END SUBROUTINE rflu_nullifybfacesortlists
2429 
2430 
2431 
2432 
2433 
2434 
2435 
2436 
2437 
2438 
2439 ! ******************************************************************************
2440 !
2441 ! Purpose: Nullify boundary vertex lists.
2442 !
2443 ! Description: None.
2444 !
2445 ! Input:
2446 ! pRegion Pointer to region
2447 !
2448 ! Output: None.
2449 !
2450 ! Notes: None.
2451 !
2452 ! ******************************************************************************
2453 
2454  SUBROUTINE rflu_nullifybvertexlists(pRegion)
2455 
2456  IMPLICIT NONE
2457 
2458 ! ******************************************************************************
2459 ! Declarations and definitions
2460 ! ******************************************************************************
2461 
2462 ! ==============================================================================
2463 ! Arguments
2464 ! ==============================================================================
2465 
2466  TYPE(t_region), POINTER :: pregion
2467 
2468 ! ==============================================================================
2469 ! Locals
2470 ! ==============================================================================
2471 
2472  INTEGER :: ipatch
2473  TYPE(t_global), POINTER :: global
2474  TYPE(t_grid), POINTER :: pgrid
2475  TYPE(t_patch), POINTER :: ppatch
2476 
2477 ! ******************************************************************************
2478 ! Start
2479 ! ******************************************************************************
2480 
2481  global => pregion%global
2482 
2483  CALL registerfunction(global,'RFLU_NullifyBVertexLists',&
2484  'RFLU_ModBoundLists.F90')
2485 
2486  IF ( global%myProcid == masterproc .AND. &
2487  global%verbLevel >= verbose_high ) THEN
2488  WRITE(stdout,'(A,1X,A)') solver_name, &
2489  'Nullifying boundary vertex lists...'
2490  END IF ! global%verbLevel
2491 
2492 ! ******************************************************************************
2493 ! Set grid pointer
2494 ! ******************************************************************************
2495 
2496  pgrid => pregion%grid
2497 
2498 ! ******************************************************************************
2499 ! Nullify memory
2500 ! ******************************************************************************
2501 
2502  DO ipatch = 1,pregion%grid%nPatches
2503  ppatch => pregion%patches(ipatch)
2504 
2505  nullify(ppatch%bv)
2506  nullify(ppatch%bvTemp)
2507  END DO ! iPatch
2508 
2509 ! ******************************************************************************
2510 ! End
2511 ! ******************************************************************************
2512 
2513  IF ( global%myProcid == masterproc .AND. &
2514  global%verbLevel >= verbose_high ) THEN
2515  WRITE(stdout,'(A,1X,A,1X,A)') solver_name, &
2516  'Nullifying boundary vertex lists done.'
2517  END IF ! global%verbLevel
2518 
2519  CALL deregisterfunction(global)
2520 
2521  END SUBROUTINE rflu_nullifybvertexlists
2522 
2523 
2524 
2525 
2526 
2527 
2528 ! ******************************************************************************
2529 !
2530 ! Purpose: Nullify boundary vertex master list.
2531 !
2532 ! Description: None.
2533 !
2534 ! Input:
2535 ! pRegion Pointer to region
2536 !
2537 ! Output: None.
2538 !
2539 ! Notes: None.
2540 !
2541 ! ******************************************************************************
2542 
2543  SUBROUTINE rflu_nullifybvertexmlist(pRegion)
2544 
2545  IMPLICIT NONE
2546 
2547 ! ******************************************************************************
2548 ! Declarations and definitions
2549 ! ******************************************************************************
2550 
2551 ! ==============================================================================
2552 ! Arguments
2553 ! ==============================================================================
2554 
2555  TYPE(t_region), POINTER :: pregion
2556 
2557 ! ==============================================================================
2558 ! Locals
2559 ! ==============================================================================
2560 
2561  TYPE(t_global), POINTER :: global
2562  TYPE(t_grid), POINTER :: pgrid
2563 
2564 ! ******************************************************************************
2565 ! Start
2566 ! ******************************************************************************
2567 
2568  global => pregion%global
2569 
2570  CALL registerfunction(global,'RFLU_NullifyBVertexMList',&
2571  'RFLU_ModBoundLists.F90')
2572 
2573  IF ( global%myProcid == masterproc .AND. &
2574  global%verbLevel >= verbose_high ) THEN
2575  WRITE(stdout,'(A,1X,A)') solver_name, &
2576  'Nullifying boundary vertex master list...'
2577  END IF ! global%verbLevel
2578 
2579 ! ******************************************************************************
2580 ! Set grid pointer
2581 ! ******************************************************************************
2582 
2583  pgrid => pregion%grid
2584 
2585 ! ******************************************************************************
2586 ! Nullify memory
2587 ! ******************************************************************************
2588 
2589  nullify(pgrid%bvm)
2590 
2591 ! ******************************************************************************
2592 ! End
2593 ! ******************************************************************************
2594 
2595  IF ( global%myProcid == masterproc .AND. &
2596  global%verbLevel >= verbose_high ) THEN
2597  WRITE(stdout,'(A,1X,A)') solver_name, &
2598  'Nullifying boundary vertex master list done.'
2599  END IF ! global%verbLevel
2600 
2601  CALL deregisterfunction(global)
2602 
2603  END SUBROUTINE rflu_nullifybvertexmlist
2604 
2605 
2606 
2607 
2608 
2609 
2610 
2611 ! ******************************************************************************
2612 !
2613 ! Purpose: Renumber combined boundary face list.
2614 !
2615 ! Description: None.
2616 !
2617 ! Input:
2618 ! pRegion Pointer to region
2619 !
2620 ! Output: None.
2621 !
2622 ! Notes: None.
2623 !
2624 ! ******************************************************************************
2625 
2626  SUBROUTINE rflu_renumberbfacelists(pRegion)
2627 
2628  IMPLICIT NONE
2629 
2630 ! ******************************************************************************
2631 ! Declarations and definitions
2632 ! ******************************************************************************
2633 
2634 ! ==============================================================================
2635 ! Arguments
2636 ! ==============================================================================
2637 
2638  TYPE(t_region), POINTER :: pregion
2639 
2640 ! ==============================================================================
2641 ! Locals
2642 ! ==============================================================================
2643 
2644  INTEGER :: errorflag,ifl,ipatch
2645  TYPE(t_global), POINTER :: global
2646  TYPE(t_grid), POINTER :: pgrid
2647  TYPE(t_patch), POINTER :: ppatch
2648 
2649 ! ******************************************************************************
2650 ! Start
2651 ! ******************************************************************************
2652 
2653  global => pregion%global
2654 
2655  CALL registerfunction(global,'RFLU_RenumberBFaceLists',&
2656  'RFLU_ModBoundLists.F90')
2657 
2658  IF ( global%myProcid == masterproc .AND. &
2659  global%verbLevel >= verbose_high ) THEN
2660  WRITE(stdout,'(A,1X,A)') solver_name, &
2661  'Renumbering boundary-face lists...'
2662  END IF ! global%verbLevel
2663 
2664 ! ******************************************************************************
2665 ! Loop over patches
2666 ! ******************************************************************************
2667 
2668  pgrid => pregion%grid
2669 
2670  DO ipatch = 1,pgrid%nPatches
2671  ppatch => pregion%patches(ipatch)
2672 
2673  IF ( global%myProcid == masterproc .AND. &
2674  global%verbLevel >= verbose_high) THEN
2675  WRITE(stdout,'(A,3X,A,1X,I3)') solver_name,'Patch:',ipatch
2676  END IF ! global%verbLevel
2677 
2678 ! ==============================================================================
2679 ! Check renumbering flag
2680 ! ==============================================================================
2681 
2682  IF ( ppatch%renumFlag .EQV. .true. ) THEN
2683  global%warnCounter = global%warnCounter + 1
2684 
2685  IF ( global%myProcid == masterproc .AND. &
2686  global%verbLevel >= verbose_none ) THEN
2687  WRITE(stdout,'(A,5X,A)') solver_name, &
2688  '*** WARNING *** Patch already renumbered. Skipping renumbering.'
2689  cycle
2690  END IF ! global
2691  END IF ! pPatch%renumFlag
2692 
2693 ! ==============================================================================
2694 ! Actual faces
2695 ! ==============================================================================
2696 
2697  IF ( ppatch%nBFaces > 0 .AND. &
2698  global%myProcid == masterproc .AND. &
2699  global%verbLevel >= verbose_high) THEN
2700  WRITE(stdout,'(A,5X,A)') solver_name,'Actual faces...'
2701  END IF ! global%verbLevel
2702 
2703  IF ( ppatch%nBFaces > 0 ) THEN
2704  CALL rflu_renumberlist(global,4,ppatch%nBFaces, &
2705  ppatch%bf2v(1:4,1:ppatch%nBFaces), &
2706  ppatch%nBVert,ppatch%bv(1:ppatch%nBVert))
2707  END IF ! pPatch%nBFaces
2708 
2709 ! ==============================================================================
2710 ! Virtual faces
2711 ! ==============================================================================
2712 
2713  IF ( ppatch%nBFacesTot > ppatch%nBFaces .AND. &
2714  global%myProcid == masterproc .AND. &
2715  global%verbLevel >= verbose_high) THEN
2716  WRITE(stdout,'(A,5X,A)') solver_name,'Virtual faces...'
2717  END IF ! global%verbLevel
2718 
2719  IF ( ppatch%nBFacesTot > ppatch%nBFaces ) THEN
2720  CALL rflu_renumberlist(global,4,ppatch%nBFacesTot-ppatch%nBFaces, &
2721  ppatch%bf2v(1:4,ppatch%nBFaces+1:ppatch%nBFacesTot), &
2722  ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
2723  END IF ! pPatch%nBFaces
2724 
2725 ! ==============================================================================
2726 ! Set renumbering flag
2727 ! ==============================================================================
2728 
2729  ppatch%renumFlag = .true.
2730  END DO ! iPatch
2731 
2732 #ifdef CHECK_DATASTRUCT
2733 ! ******************************************************************************
2734 ! Data structure output for checking
2735 ! ******************************************************************************
2736 
2737  IF ( pgrid%nPatches > 0 ) THEN
2738  WRITE(stdout,'(A)') solver_name
2739  WRITE(stdout,'(A,1X,A)') solver_name,'### START CHECK OUTPUT ###'
2740  WRITE(stdout,'(A,1X,A,A)') solver_name,'Locally-numbered boundary ', &
2741  'face lists:'
2742  DO ipatch = 1,pgrid%nPatches
2743  ppatch => pregion%patches(ipatch)
2744 
2745  WRITE(stdout,'(A,1X,A,1X,I3,3X,A)') solver_name,'Boundary:', &
2746  ipatch,trim(ppatch%bcName)
2747  WRITE(stdout,'(A,1X,A,1X,I7)') solver_name, &
2748  'Actual number of faces:', &
2749  ppatch%nBFaces
2750  WRITE(stdout,'(A,1X,A,1X,I7)') solver_name, &
2751  'Total number of faces: ', &
2752  ppatch%nBFacesTot
2753  DO ifl = 1,ppatch%nBFacesTot
2754  WRITE(stdout,'(A,5(1X,I7))') solver_name,ifl,ppatch%bf2v(1:4,ifl)
2755  END DO ! ifl
2756  END DO ! iPatch
2757  WRITE(stdout,'(A,1X,A)') solver_name,'### END CHECK OUTPUT ###'
2758  WRITE(stdout,'(A)') solver_name
2759  END IF ! pGrid%nPatches
2760 #endif
2761 
2762 ! ******************************************************************************
2763 ! End
2764 ! ******************************************************************************
2765 
2766  IF ( global%myProcid == masterproc .AND. &
2767  global%verbLevel >= verbose_high ) THEN
2768  WRITE(stdout,'(A,1X,A)') solver_name, &
2769  'Renumbering boundary-face lists done.'
2770  END IF ! global%verbLevel
2771 
2772  CALL deregisterfunction(global)
2773 
2774  END SUBROUTINE rflu_renumberbfacelists
2775 
2776 
2777 
2778 
2779 ! ******************************************************************************
2780 ! End
2781 ! ******************************************************************************
2782 
2783 END MODULE rflu_modboundlists
2784 
2785 
2786 ! ******************************************************************************
2787 !
2788 ! RCS Revision history:
2789 !
2790 ! $Log: RFLU_ModBoundLists.F90,v $
2791 ! Revision 1.33 2008/12/06 08:44:20 mtcampbe
2792 ! Updated license.
2793 !
2794 ! Revision 1.32 2008/11/19 22:17:31 mtcampbe
2795 ! Added Illinois Open Source License/Copyright
2796 !
2797 ! Revision 1.31 2007/02/27 13:02:27 haselbac
2798 ! Enabled 1d computations
2799 !
2800 ! Revision 1.30 2006/12/15 13:20:06 haselbac
2801 ! Modified calls RFLU_HashBuildKey to avoid warnings by ifort
2802 !
2803 ! Revision 1.29 2006/03/25 21:50:34 haselbac
2804 ! Modified building of master bcell list for use with sype cases
2805 !
2806 ! Revision 1.28 2005/08/21 16:08:36 haselbac
2807 ! Changed format for writing number of boundary cells
2808 !
2809 ! Revision 1.27 2005/04/21 01:24:30 haselbac
2810 ! Fixed output format
2811 !
2812 ! Revision 1.26 2005/03/23 17:09:25 haselbac
2813 ! Cosmetic changes only
2814 !
2815 ! Revision 1.25 2005/03/10 02:32:12 haselbac
2816 ! Modified estimation of number of vertices for 2d grids
2817 !
2818 ! Revision 1.24 2005/01/20 14:49:37 haselbac
2819 ! Added routines for building bface master and sorted bf2c lists
2820 !
2821 ! Revision 1.23 2004/12/04 03:26:16 haselbac
2822 ! Adapted to new HashVertex routine, only renumber if have bfaces
2823 !
2824 ! Revision 1.22 2004/11/03 17:00:35 haselbac
2825 ! Changed logic because of removal of vertFlag
2826 !
2827 ! Revision 1.21 2004/11/03 16:04:01 haselbac
2828 ! Modified setting of nBVertEst so works if nBTrisTot=1
2829 !
2830 ! Revision 1.20 2004/10/19 19:27:46 haselbac
2831 ! Substantial clean-up, added routines for local list for GENX
2832 !
2833 ! Revision 1.19 2004/07/06 15:14:35 haselbac
2834 ! Adapted to changes in libflu and modflu, cosmetics
2835 !
2836 ! Revision 1.18 2004/04/06 02:24:02 haselbac
2837 ! Changed estimation of number of boundary vertices after problems
2838 !
2839 ! Revision 1.17 2004/03/30 21:50:37 haselbac
2840 ! Changed kludge to avoid problems with Randys nozzle grid
2841 !
2842 ! Revision 1.16 2004/03/01 23:54:30 haselbac
2843 ! Change kludge to be more conservative
2844 !
2845 ! Revision 1.15 2004/02/02 22:50:40 haselbac
2846 ! Changed kludge to fix problem with ONERA C0 case
2847 !
2848 ! Revision 1.14 2004/01/22 16:03:58 haselbac
2849 ! Made contents of modules PRIVATE, only procs PUBLIC, to avoid errors on ALC
2850 ! and titan
2851 !
2852 ! Revision 1.13 2003/07/22 02:03:21 haselbac
2853 ! Added global%warnCounter
2854 !
2855 ! Revision 1.12 2003/06/04 22:08:30 haselbac
2856 ! Added Nullify routines, some cosmetics
2857 !
2858 ! Revision 1.11 2003/05/06 12:57:37 haselbac
2859 ! Removed NULLIFY of bvVirtual, breaks compilation
2860 !
2861 ! Revision 1.10 2003/05/06 01:06:20 haselbac
2862 ! Added NULLIFY for bvVirtual
2863 !
2864 ! Revision 1.9 2003/04/28 22:43:52 haselbac
2865 ! Added routines for merged (master) bv list
2866 !
2867 ! Revision 1.8 2003/04/07 14:24:19 haselbac
2868 ! Fixed formats and minor output bugs
2869 !
2870 ! Revision 1.7 2003/03/27 14:30:53 haselbac
2871 ! Added/modified routines for creating/building/destroying bv classes
2872 !
2873 ! Revision 1.6 2003/03/25 19:14:02 haselbac
2874 ! Fixed bug in printing string to screen and verbosity
2875 !
2876 ! Revision 1.5 2003/03/15 18:01:54 haselbac
2877 ! Adaptation for || RFLU (necessary for || gm)
2878 !
2879 ! Revision 1.4 2003/01/28 16:23:16 haselbac
2880 ! Added creation, removed locally-numbered lists, BuildBVertexNormals now
2881 ! in RFLU_ModGeometry
2882 !
2883 ! Revision 1.3 2003/01/08 21:08:31 haselbac
2884 ! Fixed problems with double slashes in ifdefs (Absoft 8.0)
2885 !
2886 ! Revision 1.2 2002/11/08 21:26:38 haselbac
2887 ! Some cosmetics, now allow use within moving-grid cases
2888 !
2889 ! Revision 1.1 2002/10/27 19:08:52 haselbac
2890 ! Initial revision
2891 !
2892 ! Revision 1.3 2002/10/12 14:55:27 haselbac
2893 ! Bug fix: initialize nBVert
2894 !
2895 ! Revision 1.2 2002/10/08 15:49:21 haselbac
2896 ! {IO}STAT=global%error replaced by {IO}STAT=errorFlag - SGI problem
2897 !
2898 ! Revision 1.1 2002/10/05 19:49:21 haselbac
2899 ! Initial revision
2900 !
2901 ! ******************************************************************************
2902 
2903 
2904 
2905 
2906 
2907 
2908 
2909 
2910 
2911 
2912 
2913 
2914 
2915 
2916 
2917 
2918 
2919 
2920 
2921 
2922 
2923 
2924 
2925 
2926 
2927 
2928 
2929 
subroutine, public rflu_createbfaceloclists(pRegion)
subroutine, public rflu_buildbvertexlists(pRegion)
subroutine, public rflu_buildbvertexmlist(pRegion)
subroutine, public rflu_createhashtable(global, size)
subroutine, public rflu_destroyhashtable(global)
subroutine, public rflu_nullifybfaceloclists(pRegion)
subroutine rflu_hashbuildkey1(a, key)
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, public rflu_destroybvertexmlist(pRegion)
subroutine, public rflu_buildbfacesortlists(pRegion)
subroutine simplifysortedintegers(a, na, nb)
subroutine quicksortinteger(a, n)
subroutine, public rflu_denumberbfacelists(pRegion)
subroutine, public rflu_createbfacesortlists(pRegion)
subroutine, public rflu_denumberlist(global, listDim1, listDim2, list, keyDim, key)
subroutine, public rflu_nullifybvertexmlist(pRegion)
subroutine, public rflu_destroybcellmlist(pRegion)
subroutine, public rflu_buildbcellmlist(pRegion)
subroutine, public rflu_renumberbfacelists(pRegion)
subroutine, public rflu_destroybfacesortlists(pRegion)
subroutine, public rflu_nullifybcellmlist(pRegion)
subroutine, public rflu_nullifybvertexlists(pRegion)
subroutine, public rflu_destroybvertexlists(pRegion)
subroutine, public rflu_createbvertexlists(pRegion)
subroutine, public rflu_destroybfaceloclists(pRegion)
subroutine, public rflu_renumberlist(global, listDim1, listDim2, list, keyDim, key)
subroutine mergesortedintegers(global, na, nb, a, b, nm, im, m)
subroutine, public rflu_nullifybfacesortlists(pRegion)
subroutine, public rflu_createbvertexmlist(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine, public rflu_buildbfaceloclists(pRegion)
static T_Key key
Definition: vinci_lass.c:76
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine, public rflu_hashvertex(global, key, ivg, nVert, vert, errorFlag)
subroutine, public rflu_createbcellmlist(pRegion)