Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_ModPartitionRegionUtils.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 utility routines to partition region.
26 !
27 ! Description: None.
28 !
29 ! Notes: None.
30 !
31 ! ******************************************************************************
32 !
33 ! $Id: RFLU_ModPartitionRegionUtils.F90,v 1.8 2008/12/06 08:45:03 mtcampbe Exp $
34 !
35 ! Copyright: (c) 2005-2007 by the University of Illinois
36 !
37 ! ******************************************************************************
38 
40 
41  USE modglobal, ONLY: t_global
42  USE moddatatypes
43  USE modparameters
44  USE moderror
45  USE modbndpatch, ONLY: t_patch
46  USE moddatastruct, ONLY: t_level,t_region
47  USE modgrid, ONLY: t_grid
48  USE modmpi
49 
50  USE modsortsearch
51 
52  IMPLICIT NONE
53 
54  PRIVATE
55  PUBLIC :: rflu_part_addvirtualcellsinv1, &
57 
58 ! ******************************************************************************
59 ! Declarations and definitions
60 ! ******************************************************************************
61 
62  CHARACTER(CHRLEN) :: &
63  RCSIdentString = '$RCSfile: RFLU_ModPartitionRegionUtils.F90,v $ $Revision: 1.8 $'
64 
65 
66 ! ******************************************************************************
67 ! Routines
68 ! ******************************************************************************
69 
70  CONTAINS
71 
72 
73 
74 
75 
76 
77 ! ******************************************************************************
78 !
79 ! Purpose: Add virtual cells for inviscid fluxes based on first-order scheme.
80 !
81 ! Description: None.
82 !
83 ! Input:
84 ! pRegion Pointer to region
85 ! pRegionSerial Pointer to serial region
86 ! vc List of virtual cells (empty)
87 ! nCellsVirtMax Maximum allowable number of virtual cells
88 !
89 ! Output:
90 ! vc List of virtual cells
91 ! nCellsVirt Number of virtual cells
92 !
93 ! Notes: None.
94 !
95 ! ******************************************************************************
96 
97  SUBROUTINE rflu_part_addvirtualcellsinv1(pRegion,pRegionSerial,vc, &
98  ncellsvirtmax,ncellsvirt)
99 
100  IMPLICIT NONE
101 
102 ! ******************************************************************************
103 ! Declarations and definitions
104 ! ******************************************************************************
105 
106 ! ==============================================================================
107 ! Arguments
108 ! ==============================================================================
109 
110  INTEGER, INTENT(IN) :: ncellsvirtmax
111  INTEGER, INTENT(OUT) :: ncellsvirt
112  INTEGER, INTENT(INOUT) :: vc(ncellsvirtmax)
113  TYPE(t_region), POINTER :: pregion,pregionserial
114 
115 ! ==============================================================================
116 ! Locals
117 ! ==============================================================================
118 
119  INTEGER :: c1,c2,errorflag,icg,icl,ifg,ifl,iflbeg,iflend,iloc
120  TYPE(t_grid), POINTER :: pgrid,pgridserial
121  TYPE(t_global), POINTER :: global
122 
123 ! ******************************************************************************
124 ! Start
125 ! ******************************************************************************
126 
127  global => pregionserial%global
128 
129  CALL registerfunction(global,'RFLU_PART_AddVirtualCellsInv1',&
130  'RFLU_ModPartitionRegionUtils.F90')
131 
132  IF ( global%verbLevel > verbose_none ) THEN
133  WRITE(stdout,'(A,1X,A)') solver_name, &
134  'Adding virtual cells for inviscid first-order stencil...'
135  END IF ! global%verbLevel
136 
137 ! ******************************************************************************
138 ! Set pointers and initialize variables
139 ! ******************************************************************************
140 
141  pgrid => pregion%grid
142  pgridserial => pregionserial%grid
143 
144  ncellsvirt = 0
145 
146  iflbeg = pgridserial%avfCSRInfo(pregion%iRegionGlobal)
147 
148  IF ( pregion%iRegionGlobal /= global%nRegionsLocal ) THEN
149  iflend = pgridserial%avfCSRInfo(pregion%iRegionGlobal+1)-1
150  ELSE
151  iflend = 2*pgridserial%nFacesCut
152  END IF ! pRegion%iRegionGlobal
153 
154 ! ******************************************************************************
155 ! Loop over actual-virtual faces
156 ! ******************************************************************************
157 
158  DO ifl = iflbeg,iflend
159  ifg = pgridserial%avfCSR(ifl)
160 
161  DO icl = 1,2
162  icg = pgridserial%f2c(icl,ifg)
163 
164  IF ( pgridserial%sc2r(icg) /= pregion%iRegionGlobal ) THEN
165  IF ( ncellsvirt > 0 ) THEN
166  CALL binarysearchinteger(vc(1:ncellsvirt),ncellsvirt,icg,iloc)
167  ELSE
168  iloc = element_not_found
169  END IF ! nCellsVirt
170 
171  IF ( iloc == element_not_found ) THEN
172  ncellsvirt = ncellsvirt + 1
173 
174  IF ( ncellsvirt <= ncellsvirtmax ) THEN
175  vc(ncellsvirt) = icg
176  ELSE
177  CALL errorstop(global,err_exceed_dimens,__line__,'vc')
178  END IF ! nCellsVirt
179 
180  IF ( ncellsvirt > 1 ) THEN
181  CALL quicksortinteger(vc(1:ncellsvirt),ncellsvirt)
182  END IF ! nCellsVirt
183  END IF ! iLoc
184  END IF ! pGridSerial%sc2r
185  END DO ! icl
186  END DO ! ifl
187 
188 ! ******************************************************************************
189 ! End
190 ! ******************************************************************************
191 
192  IF ( global%myProcid == masterproc .AND. &
193  global%verbLevel > verbose_none ) THEN
194  WRITE(stdout,'(A,1X,A)') solver_name, &
195  'Adding virtual cells for inviscid first-order stencil done.'
196  END IF ! global%myProcid
197 
198  CALL deregisterfunction(global)
199 
200  END SUBROUTINE rflu_part_addvirtualcellsinv1
201 
202 
203 
204 
205 
206 
207 
208 
209 ! ******************************************************************************
210 !
211 ! Purpose: Add virtual cells for inviscid fluxes based on higher-order scheme.
212 !
213 ! Description: Building list of virtual cells proceeds in several steps:
214 ! 1. Build list of vertices from list of actual-virtual faces
215 ! 2. Build list of source cells adjacent to actual-virtual faces which are
216 ! in same region as that for which virtual cells are constructed. One
217 ! layer of source cells is sufficient. If more layers of source cells
218 ! are specified here, this should not change the number of virtual cells.
219 ! 3. Build stencils for source cells and add stencil members to list of
220 ! virtual cells if not in same region
221 ! 4. Loop over existing virtual cells and add layers.
222 !
223 ! Input:
224 ! pRegion Pointer to region
225 ! pRegionSerial Pointer to serial region
226 ! vc List of virtual cells (empty)
227 ! nCellsVirtMax Maximum allowable number of virtual cells
228 !
229 ! Output:
230 ! vc List of virtual cells
231 ! nCellsVirt Number of virtual cells
232 !
233 ! Notes: None.
234 !
235 ! ******************************************************************************
236 
237  SUBROUTINE rflu_part_addvirtualcellsinv2(pRegion,pRegionSerial,vc, &
238  ncellsvirtmax,ncellsvirt)
239 
243 
244  IMPLICIT NONE
245 
246 ! ******************************************************************************
247 ! Declarations and definitions
248 ! ******************************************************************************
249 
250 ! ==============================================================================
251 ! Arguments
252 ! ==============================================================================
253 
254  INTEGER, INTENT(IN) :: ncellsvirtmax
255  INTEGER, INTENT(OUT) :: ncellsvirt
256  INTEGER, INTENT(INOUT) :: vc(ncellsvirtmax)
257  TYPE(t_region), POINTER :: pregion,pregionserial
258 
259 ! ==============================================================================
260 ! Locals
261 ! ==============================================================================
262 
263  INTEGER, PARAMETER :: loop_counter_limit = 5
264  INTEGER :: errorflag,i,icg,icg2,idimens,idir,iflbeg,iflend,ilayer,iloc,j, &
265  loopcounter,nlayers,nvert,nvertest,scdim,vcnewdim,vcnewdimmax, &
266  vcolddim
267  INTEGER, DIMENSION(:), ALLOCATABLE :: avv,sc,vcnew,vcold
268  TYPE(t_grid), POINTER :: pgrid,pgridserial
269  TYPE(t_global), POINTER :: global
270 
271 ! ******************************************************************************
272 ! Start
273 ! ******************************************************************************
274 
275  global => pregionserial%global
276 
277  CALL registerfunction(global,'RFLU_PART_AddVirtualCellsInv2',&
278  'RFLU_ModPartitionRegionUtils.F90')
279 
280  IF ( global%myProcid == masterproc .AND. &
281  global%verbLevel > verbose_none ) THEN
282  WRITE(stdout,'(A,1X,A)') solver_name, &
283  'Adding virtual cells for inviscid higher-order stencil...'
284  END IF ! global%myProcid
285 
286 ! ******************************************************************************
287 ! Set pointers and initialize variables
288 ! ******************************************************************************
289 
290  pgrid => pregion%grid
291  pgridserial => pregionserial%grid
292 
293  ncellsvirt = 0
294 
295  loopcounter = 0
296 
297 ! ******************************************************************************
298 ! Build list of interface vertices
299 ! ******************************************************************************
300 
301 ! ==============================================================================
302 ! Estimate number of interface vertices
303 ! ==============================================================================
304 
305  iflbeg = pgridserial%avfCSRInfo(pregion%iRegionGlobal)
306 
307  IF ( pregion%iRegionGlobal /= global%nRegionsLocal ) THEN
308  iflend = pgridserial%avfCSRInfo(pregion%iRegionGlobal+1)-1
309  ELSE
310  iflend = 2*pgridserial%nFacesCut
311  END IF ! pRegion%iRegionGlobal
312 
313  nvertest = 2*(iflend - iflbeg + 1)
314 
315  IF ( nvertest < 100 ) THEN ! Kludge
316  nvertest = 100 + 4*nvertest
317  ELSE IF ( nvertest < 1000 ) THEN
318  nvertest = 2*nvertest
319  END IF ! nVertEst
320 
321 ! ==============================================================================
322 ! Build list of interface vertices. NOTE this sometimes failed for some cases
323 ! because the estimated size was too small, so added capability of adaptively
324 ! increasing size within some limits to prevent code from aborting.
325 ! ==============================================================================
326 
327  emptyloop: DO
328  loopcounter = loopcounter + 1
329 
330  ALLOCATE(avv(nvertest),stat=errorflag)
331  global%error = errorflag
332  IF ( global%error /= err_none ) THEN
333  CALL errorstop(global,err_allocate,__line__,'avv')
334  END IF ! global%error
335 
336  CALL rflu_buildfacevertlist(global,pgridserial, &
337  pgridserial%avfCSR(iflbeg:iflend), &
338  iflend-iflbeg+1,avv,nvertest,nvert,errorflag)
339 
340  IF ( errorflag /= err_none ) THEN
341  IF ( loopcounter <= loop_counter_limit ) THEN
342  DEALLOCATE(avv,stat=errorflag)
343  global%error = errorflag
344  IF ( global%error /= err_none ) THEN
345  CALL errorstop(global,err_allocate,__line__,'avv')
346  END IF ! global%error
347 
348  nvertest = 2*nvertest
349 
350  global%warnCounter = global%warnCounter + 1
351 
352  IF ( global%myProcid == masterproc .AND. &
353  global%verbLevel > verbose_low ) THEN
354  WRITE(stdout,'(A,3X,A,1X,I2,1X,A)') solver_name, &
355  '*** WARNING *** Attempt ',loopcounter, &
356  'to build vertex list failed because array too small.'
357  WRITE(stdout,'(A,19X,A,1X,I7)') solver_name, &
358  'Attempting again with array size:',nvertest
359  END IF ! global%myProcid
360  ELSE
361  CALL errorstop(global,err_allocate_adaptive,__line__)
362  END IF ! loopCounter
363  ELSE
364  EXIT emptyloop
365  END IF ! errorFlag
366  END DO emptyloop
367 
368 ! ******************************************************************************
369 ! Based on list of interface vertices, build list of source cells adjacent to
370 ! actual-virtual faces for construction of virtual cells. One layer of source
371 ! cells is sufficient. If more layers of source cells are specified here, this
372 ! should not change the number of virtual cells.
373 ! ******************************************************************************
374 
375  ALLOCATE(sc(ncellsvirtmax),stat=errorflag)
376  global%error = errorflag
377  IF ( global%error /= err_none ) THEN
378  CALL errorstop(global,err_allocate,__line__,'sc')
379  END IF ! global%error
380 
381  nlayers = 1
382 
383  CALL rflu_buildvertcellnghblist(global,pgridserial,avv,nvert,nlayers, &
384  pregion%iRegionGlobal,sc,ncellsvirtmax, &
385  scdim)
386 
387  DEALLOCATE(avv,stat=errorflag)
388  global%error = errorflag
389  IF ( global%error /= err_none ) THEN
390  CALL errorstop(global,err_deallocate,__line__,'avv')
391  END IF ! global%error
392 
393 ! ******************************************************************************
394 ! Loop over list of source cells, build stencil for each cell, and add cells
395 ! in stencil as virtual cells if not in same region and not already added
396 ! ******************************************************************************
397 
398  CALL rflu_setinfoc2cstencilwrapper(pregionserial, &
399  pregionserial%mixtInput%spaceOrder-1)
400  CALL rflu_createc2cstencilwrapper(pregionserial)
401 
402  DO i = 1,scdim
403  icg = sc(i)
404 
405  CALL rflu_buildc2cstencilwrapper(pregionserial,icg,constr_none)
406 
407  SELECT CASE ( pregionserial%mixtInput%stencilDimensCells )
408  CASE ( 1 )
409  DO idimens = 1,pregionserial%mixtInput%dimens
410  idir = xcoord - 1 + idimens
411 
412  DO j = 1,pgridserial%c2cs1D(idir,icg)%nCellMembs
413  icg2 = pgridserial%c2cs1D(idir,icg)%cellMembs(j)
414 
415  IF ( pgridserial%sc2r(icg2) /= pregion%iRegionGlobal ) THEN
416  IF ( ncellsvirt > 0 ) THEN
417  CALL binarysearchinteger(vc(1:ncellsvirt),ncellsvirt,icg2,iloc)
418  ELSE
419  iloc = element_not_found
420  END IF ! nCellsVirt
421 
422  IF ( iloc == element_not_found ) THEN
423  ncellsvirt = ncellsvirt + 1
424 
425  vc(ncellsvirt) = icg2
426 
427  IF ( ncellsvirt > 1 ) THEN
428  CALL quicksortinteger(vc(1:ncellsvirt),ncellsvirt)
429  END IF ! nCellsVirt
430  END IF ! iLoc
431  END IF ! pGridSerial%sc2r
432  END DO ! j
433  END DO ! iDimens
434  CASE ( 2,3 )
435  DO j = 1,pgridserial%c2cs(icg)%nCellMembs
436  icg2 = pgridserial%c2cs(icg)%cellMembs(j)
437 
438  IF ( pgridserial%sc2r(icg2) /= pregion%iRegionGlobal ) THEN
439  IF ( ncellsvirt > 0 ) THEN
440  CALL binarysearchinteger(vc(1:ncellsvirt),ncellsvirt,icg2,iloc)
441  ELSE
442  iloc = element_not_found
443  END IF ! nCellsVirt
444 
445  IF ( iloc == element_not_found ) THEN
446  ncellsvirt = ncellsvirt + 1
447 
448  vc(ncellsvirt) = icg2
449 
450  IF ( ncellsvirt > 1 ) THEN
451  CALL quicksortinteger(vc(1:ncellsvirt),ncellsvirt)
452  END IF ! nCellsVirt
453  END IF ! iLoc
454  END IF ! pGridSerial%sc2r
455  END DO ! j
456  CASE default
457  CALL errorstop(global,err_reached_default,__line__)
458  END SELECT ! pRegionSerial%mixtInput%stencilDimensCells
459  END DO ! i
460 
461  DEALLOCATE(sc,stat=errorflag)
462  global%error = errorflag
463  IF ( global%error /= err_none ) THEN
464  CALL errorstop(global,err_deallocate,__line__,'sc')
465  END IF ! global%error
466 
467 ! ******************************************************************************
468 ! Loop over current list of virtual cells and add layers of cells. For the
469 ! current scheme, two additional layers are required.
470 ! ******************************************************************************
471 
472 ! ==============================================================================
473 ! Allocate temporary memory
474 ! ==============================================================================
475 
476  vcolddim = ncellsvirt
477  vcnewdimmax = ncellsvirtmax
478 
479  ALLOCATE(vcold(vcolddim),stat=errorflag)
480  global%error = errorflag
481  IF ( global%error /= err_none ) THEN
482  CALL errorstop(global,err_allocate,__line__,'vcOld')
483  END IF ! global%error
484 
485  DO i = 1,vcolddim
486  vcold(i) = vc(i)
487  END DO ! i
488 
489  ALLOCATE(vcnew(vcnewdimmax),stat=errorflag)
490  global%error = errorflag
491  IF ( global%error /= err_none ) THEN
492  CALL errorstop(global,err_allocate,__line__,'vcNew')
493  END IF ! global%error
494 
495 ! ==============================================================================
496 ! Loop over layers
497 ! ==============================================================================
498 
499  nlayers = 2
500 
501  DO ilayer = 1,nlayers
502  vcnewdim = 0
503 
504  DO i = 1,vcolddim
505  icg = vcold(i)
506 
507  CALL rflu_buildc2cstencilwrapper(pregionserial,icg,constr_none)
508 
509  SELECT CASE ( pregionserial%mixtInput%stencilDimensCells )
510  CASE ( 1 )
511  DO idimens = 1,pregionserial%mixtInput%dimens
512  idir = xcoord - 1 + idimens
513 
514  DO j = 1,pgridserial%c2cs1D(idir,icg)%nCellMembs
515  icg2 = pgridserial%c2cs1D(idir,icg)%cellMembs(j)
516 
517  IF ( pgridserial%sc2r(icg2) /= pregion%iRegionGlobal ) THEN
518  CALL binarysearchinteger(vc(1:ncellsvirt),ncellsvirt,icg2,iloc)
519 
520  IF ( iloc == element_not_found ) THEN
521  IF ( ncellsvirt < ncellsvirtmax ) THEN
522  ncellsvirt = ncellsvirt + 1
523  vc(ncellsvirt) = icg2
524  ELSE
525  CALL errorstop(global,err_exceed_dimens,__line__,'vc')
526  END IF ! nCellsVirt
527 
528  IF ( vcnewdim < vcnewdimmax ) THEN
529  vcnewdim = vcnewdim + 1
530  vcnew(vcnewdim) = icg2
531  ELSE
532  CALL errorstop(global,err_exceed_dimens,__line__,'vcNew')
533  END IF ! vcNewDim
534 
535  CALL quicksortinteger(vc(1:ncellsvirt),ncellsvirt)
536  END IF ! iLoc
537  END IF ! pGridSerial%sc2r
538  END DO ! j
539  END DO ! iDimens
540  CASE ( 2,3 )
541  DO j = 1,pgridserial%c2cs(icg)%nCellMembs
542  icg2 = pgridserial%c2cs(icg)%cellMembs(j)
543 
544  IF ( pgridserial%sc2r(icg2) /= pregion%iRegionGlobal ) THEN
545  CALL binarysearchinteger(vc(1:ncellsvirt),ncellsvirt,icg2,iloc)
546 
547  IF ( iloc == element_not_found ) THEN
548  IF ( ncellsvirt < ncellsvirtmax ) THEN
549  ncellsvirt = ncellsvirt + 1
550  vc(ncellsvirt) = icg2
551  ELSE
552  CALL errorstop(global,err_exceed_dimens,__line__,'vc')
553  END IF ! nCellsVirt
554 
555  IF ( vcnewdim < vcnewdimmax ) THEN
556  vcnewdim = vcnewdim + 1
557  vcnew(vcnewdim) = icg2
558  ELSE
559  CALL errorstop(global,err_exceed_dimens,__line__,'vcNew')
560  END IF ! vcNewDim
561 
562  CALL quicksortinteger(vc(1:ncellsvirt),ncellsvirt)
563  END IF ! iLoc
564  END IF ! pGridSerial%sc2r
565  END DO ! j
566  CASE default
567  CALL errorstop(global,err_reached_default,__line__)
568  END SELECT ! pRegionSerial%mixtInput%stencilDimensCells
569  END DO ! i
570 
571  DEALLOCATE(vcold,stat=errorflag)
572  global%error = errorflag
573  IF ( global%error /= err_none ) THEN
574  CALL errorstop(global,err_deallocate,__line__,'vcOld')
575  END IF ! global%error
576 
577  IF ( ilayer /= nlayers ) THEN
578  vcolddim = vcnewdim
579 
580  ALLOCATE(vcold(vcolddim),stat=errorflag)
581  global%error = errorflag
582  IF ( global%error /= err_none ) THEN
583  CALL errorstop(global,err_allocate,__line__,'vcOld')
584  END IF ! global%error
585 
586  DO i = 1,vcolddim
587  vcold(i) = vcnew(i)
588  END DO ! i
589  END IF ! iLayer
590  END DO ! iLayer
591 
592 ! ==============================================================================
593 ! Deallocate temporary memory
594 ! ==============================================================================
595 
596  DEALLOCATE(vcnew,stat=errorflag)
597  global%error = errorflag
598  IF ( global%error /= err_none ) THEN
599  CALL errorstop(global,err_deallocate,__line__,'vcNew')
600  END IF ! global%error
601 
602  CALL rflu_destroyc2cstencilwrapper(pregionserial)
603 
604 ! ******************************************************************************
605 ! End
606 ! ******************************************************************************
607 
608  IF ( global%myProcid == masterproc .AND. &
609  global%verbLevel > verbose_none ) THEN
610  WRITE(stdout,'(A,1X,A)') solver_name, &
611  'Adding virtual cells for inviscid higher-order stencil done.'
612  END IF ! global%myProcid
613 
614  CALL deregisterfunction(global)
615 
616  END SUBROUTINE rflu_part_addvirtualcellsinv2
617 
618 
619 
620 
621 
622 
623 
624 ! ******************************************************************************
625 ! End
626 ! ******************************************************************************
627 
629 
630 
631 ! ******************************************************************************
632 !
633 ! RCS Revision history:
634 !
635 ! $Log: RFLU_ModPartitionRegionUtils.F90,v $
636 ! Revision 1.8 2008/12/06 08:45:03 mtcampbe
637 ! Updated license.
638 !
639 ! Revision 1.7 2008/11/19 22:18:14 mtcampbe
640 ! Added Illinois Open Source License/Copyright
641 !
642 ! Revision 1.6 2007/03/06 18:10:09 haselbac
643 ! Adapted to building 1d stencils for higher-order scheme
644 !
645 ! Revision 1.5 2006/01/06 22:17:20 haselbac
646 ! Adapted to name changes
647 !
648 ! Revision 1.4 2005/10/27 19:21:26 haselbac
649 ! Adapted to changes in stencil routine names
650 !
651 ! Revision 1.3 2005/10/05 14:25:11 haselbac
652 ! Adapted to changes in stencil modules
653 !
654 ! Revision 1.2 2005/06/14 17:48:14 haselbac
655 ! Adapted RFLU_AddVirtualCellsInv2 to adaptive memory allocation
656 !
657 ! Revision 1.1 2005/04/15 15:09:13 haselbac
658 ! Initial revision
659 !
660 ! Revision 1.1 2005/01/17 19:47:47 haselbac
661 ! Initial revision
662 !
663 ! ******************************************************************************
664 
665 
666 
667 
668 
669 
670 
671 
subroutine, public rflu_createc2cstencilwrapper(pRegion)
subroutine, public rflu_part_addvirtualcellsinv2(pRegion, pRegionSerial, vc, nCellsVirtMax, nCellsVirt)
subroutine, public rflu_buildfacevertlist(global, pGrid, fList, fListDim, vList, vListDimMax, vListDim, errorFlag)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine quicksortinteger(a, n)
subroutine binarysearchinteger(a, n, v, i, j)
subroutine, public rflu_part_addvirtualcellsinv1(pRegion, pRegionSerial, vc, nCellsVirtMax, nCellsVirt)
subroutine, public rflu_destroyc2cstencilwrapper(pRegion)
blockLoc i
Definition: read.cpp:79
**********************************************************************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 idir
subroutine, public rflu_setinfoc2cstencilwrapper(pRegion, orderNominal)
subroutine, public rflu_buildc2cstencilwrapper(pRegion, icgInput, constrInput)
j indices j
Definition: Indexing.h:6
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine, public rflu_buildvertcellnghblist(global, pGrid, vListOrig, vListOrigDim, nLayers, iReg, cList, cListDimMax, cListDim)
subroutine deregisterfunction(global)
Definition: ModError.F90:469
IndexType nvert() const
Definition: Mesh.H:565