Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PLAG_BufferDataSend.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: send buffer data to adjacent region on different processor.
26 !
27 ! Description: none.
28 !
29 ! Input: regions = data of all regions
30 ! iReg = index of current region.
31 !
32 ! Output: integer and real data buffer to other processors.
33 !
34 ! Notes: None.
35 !
36 !******************************************************************************
37 !
38 ! $Id: PLAG_BufferDataSend.F90,v 1.6 2009/03/02 00:19:36 mtcampbe Exp $
39 !
40 ! Copyright: (c) 2003 by the University of Illinois
41 !
42 !******************************************************************************
43 
44 SUBROUTINE plag_bufferdatasend( regions, iReg )
45 
46  USE moddatatypes
47  USE modpartlag, ONLY : t_buffer_plag
48  USE modbndpatch, ONLY : t_patch
49  USE moddatastruct, ONLY : t_region
50  USE modglobal, ONLY : t_global
51  USE modindexing, ONLY : getijk, indijkmap
54  USE modpartlag, ONLY : t_plag
55  USE moderror
56  USE modmpi
57  USE modparameters
59 
60  IMPLICIT NONE
61 
62 ! ... parameters
63  TYPE(t_region), POINTER :: regions(:)
64 
65  INTEGER :: ireg
66 
67 ! ... loop variables
68  INTEGER :: ipatch, ibuff, icont
69 
70 ! ... local variables
71  CHARACTER(CHRLEN) :: rcsidentstring
72 
73 #ifdef MPI
74  INTEGER :: statusplag(mpi_status_size)
75 #endif
76 
77  INTEGER :: bctype, ilev, ipatchdes, iregdes, &
78  irequestplag, narv, naiv, nbuffsizesrc, ncont, &
79  ncv, ndimi, ndimr, ndv, npatches, nsendbuffi, &
80  nsendbuffr, ntv, procdes, tagdesi, tagdesr
81 
82  INTEGER :: ibegsrc, iendsrc, jbegsrc, jendsrc, kbegsrc, kendsrc, &
83  idirsrc, jdirsrc, kdirsrc, icoffsrc, ijcoffsrc, &
84  ibegdes, ienddes, jbegdes, jenddes, kbegdes, kenddes, &
85  idirdes, jdirdes, kdirdes, icoffdes, ijcoffdes, ilevdes
86 
87  INTEGER :: lbsrc, lbdes, l1desdir, l2desdir, mapmat(3,4), &
88  ndumcellssrc, ndumcellsdes
89 
90  INTEGER :: indexisrc, indexjsrc, indexksrc, icellssrc, &
91  indexides, indexjdes, indexkdes, icellsdes
92 
93  INTEGER :: iaiv, iarv, iarvold, ibuffsend, icv, icvold, irhs, irhssum
94 
95  INTEGER, POINTER, DIMENSION(:) :: pcvplagmass, psendbuffi
96 
97  INTEGER, POINTER, DIMENSION(:,:) :: paivsrc
98 
99  LOGICAL :: alignsrc, aligndes
100 
101  REAL(RFREAL), POINTER, DIMENSION(:) :: psendbuffr
102 
103  REAL(RFREAL), POINTER, DIMENSION(:,:) :: parvsrc, parvoldsrc, &
104  pcvsrc , pcvoldsrc , &
105  prhssrc, prhssumsrc
106 
107  TYPE(t_patch), POINTER :: ppatchsrc, ppatchdes
108  TYPE(t_plag), POINTER :: pplag
109  TYPE(t_region), POINTER :: pregionsrc, pregiondes
110  TYPE(t_global), POINTER :: global
111 
112 !******************************************************************************
113 
114  rcsidentstring = '$RCSfile: PLAG_BufferDataSend.F90,v $ $Revision: 1.6 $'
115 
116  global => regions(ireg)%global
117 
118  CALL registerfunction( global,'PLAG_BufferDataSend',&
119  'PLAG_BufferDataSend.F90' )
120 
121 ! get dimensions ------------------------------
122 
123  ncont = regions(ireg)%plagInput%nCont
124  ncv = cv_plag_last + ncont
125  ndv = dv_plag_last
126  ntv = tv_plag_last
127  naiv = aiv_plag_last
128  narv = arv_plag_last
129 
130  ndimi = naiv
131  ndimr = 2*narv +4*ncv
132 
133 ! set pointer for Source Region ------------------------------
134 
135  pregionsrc => regions(ireg)
136 
137  ilev = pregionsrc%currLevel
138  npatches = pregionsrc%nPatches
139 
140  ndumcellssrc = pregionsrc%nDumCells
141 
142  pplag => pregionsrc%levels(ilev)%plag
143  pcvplagmass => pplag%cvPlagMass
144 
145 ! loop over patches -----------------------------------------------------------
146 
147  DO ipatch = 1, npatches
148 
149 ! - pointer is at Src region sending data to Des region -----------------------
150 
151  ppatchsrc => regions(ireg)%levels(ilev)%patches(ipatch)
152 
153  bctype = ppatchsrc%bcType
154  iregdes = ppatchsrc%srcRegion
155  ipatchdes = ppatchsrc%srcPatch
156 
157 ! - get patch information on source region ------------------------------------
158 
159  CALL rflo_getpatchindices( pregionsrc,ppatchsrc,ilev,ibegsrc,iendsrc, &
160  jbegsrc,jendsrc,kbegsrc,kendsrc )
161  CALL rflo_getpatchdirection( ppatchsrc,idirsrc,jdirsrc,kdirsrc )
162  CALL rflo_getcelloffset( pregionsrc,ilev,icoffsrc,ijcoffsrc )
163 
164 ! - region interface for various boundary conditions --------------------------
165 
166  IF ( (bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
167  (bctype>=bc_regionint .AND. bctype<=bc_regionint +bc_range) .OR. &
168  (bctype>=bc_regnonconf .AND. bctype<=bc_regnonconf+bc_range) .OR. &
169  (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
170  (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range) ) THEN
171 
172  IF ( regions(iregdes)%procid /= global%myProcid ) THEN
173  pregiondes => regions(iregdes)
174  ppatchdes => pregiondes%levels(ilev)%patches(ipatchdes)
175 
176 ! -- set pointers and buffer size on source region ---------------------------
177 
178  paivsrc => ppatchsrc%bufferPlag%aiv
179  parvsrc => ppatchsrc%bufferPlag%arv
180 
181  pcvsrc => ppatchsrc%bufferPlag%cv
182  prhssrc => ppatchsrc%bufferPlag%rhs
183  prhssumsrc => ppatchsrc%bufferPlag%rhsSum
184 
185  parvoldsrc => ppatchsrc%bufferPlag%arvOld
186  pcvoldsrc => ppatchsrc%bufferPlag%cvOld
187 
188  psendbuffi => ppatchsrc%bufferPlag%sendBuffI
189  psendbuffr => ppatchsrc%bufferPlag%sendBuffR
190 
191  nbuffsizesrc = ppatchsrc%bufferPlag%nBuffSize
192 
193 ! -- exit for null buffer size ------------------------------------------------
194 
195  IF ( nbuffsizesrc == 0 ) goto 999
196 
197  nsendbuffi = ndimi * nbuffsizesrc
198  nsendbuffr = ndimr * nbuffsizesrc
199 
200  ppatchsrc%bufferPlag%nSendBuffI = nsendbuffi
201  ppatchsrc%bufferPlag%nSendBuffR = nsendbuffr
202 
203  irequestplag = ppatchsrc%bufferPlag%iRequest
204 
205  procdes = pregiondes%procid
206 
207 #ifdef PLAG_MPI_DEBUG
208  IF( nbuffsizesrc /=0 )&
209  WRITE(stdout,*) ' PLAG_BufferSizeSend: iReg, nBuffSizeSrc, nDimI, nDimR, nSendBuffI, nSendBuffR, iRequestPlag = ',&
210  ireg, nbuffsizesrc, ndimi, ndimr, nsendbuffi, nsendbuffr, irequestplag
211 #endif
212 
213 ! -- get patch information on destination region ------------------------------
214 
215  ilevdes = pregiondes%currLevel
216  ndumcellsdes = pregiondes%nDumCells
217  CALL rflo_getpatchindices( pregiondes,ppatchdes,ilevdes,ibegdes,ienddes, &
218  jbegdes,jenddes,kbegdes,kenddes )
219  CALL rflo_getpatchdirection( ppatchdes,idirdes,jdirdes,kdirdes )
220  CALL rflo_getcelloffset( pregiondes,ilevdes,icoffdes,ijcoffdes )
221 
222 #ifdef PLAG_MPI_DEBUG
223  IF( nbuffsizesrc /=0 )&
224  WRITE(stdout,*) ' PLAG_BufferDataSend: iReg,ibegSrc,iendSrc,jbegSrc,jendSrc,kbegSrc,kendSrc = ',&
225  ireg,ibegsrc,iendsrc,jbegsrc,jendsrc,kbegsrc,kendsrc
226 
227  IF( nbuffsizesrc /=0 )&
228  WRITE(stdout,*) ' PLAG_BufferDataSend: iRegDes,ibegDes,iendDes,jbegDes,jendDes,kbegDes,kendDes = ',&
229  iregdes,ibegdes,ienddes,jbegdes,jenddes,kbegdes,kenddes
230 #endif
231 
232 ! mapping between patches -----------------------------------------------------
233 
234  l1desdir = 1
235  IF (ppatchsrc%srcL1beg > ppatchsrc%srcL1end) l1desdir = -1
236  l2desdir = 1
237  IF (ppatchsrc%srcL2beg > ppatchsrc%srcL2end) l2desdir = -1
238 
239  lbsrc = ppatchsrc%lbound
240  lbdes = ppatchsrc%srcLbound
241  alignsrc = ppatchsrc%align
242 
243  CALL rflo_getpatchmapping( lbsrc,lbdes,l1desdir,l2desdir,alignsrc, &
244  idirsrc,jdirsrc,kdirsrc, &
245  idirdes,jdirdes,kdirdes, &
246  ibegsrc,iendsrc,jbegsrc,jendsrc, &
247  kbegsrc,kendsrc, &
248  ibegdes,ienddes,jbegdes,jenddes, &
249  kbegdes,kenddes,mapmat )
250 
251 ! load send buffers while updating data ---------------------------------------
252 
253 !- Integer variables ----------------------------------------------------------
254 
255  DO ibuff = 1, nbuffsizesrc
256 
257 ! -- compute shift
258 
259  ibuffsend = ndimi*(ibuff-1) +1
260 
261 !-- extract indices
262 
263  icellssrc = paivsrc(aiv_plag_icells,ibuff)
264  indexisrc = paivsrc(aiv_plag_indexi,ibuff)
265  indexjsrc = paivsrc(aiv_plag_indexj,ibuff)
266  indexksrc = paivsrc(aiv_plag_indexk,ibuff)
267 
268 !-- get mapping
269 
270  icellsdes = indijkmap( indexisrc,indexjsrc,indexksrc, &
271  mapmat,icoffdes,ijcoffdes )
272  CALL getijk( icellsdes,icoffdes,ijcoffdes,ndumcellsdes,&
273  indexides,indexjdes,indexkdes)
274 
275 !-- load integer data buffers
276 
277  iaiv = ibuffsend
278  psendbuffi(iaiv ) = paivsrc(aiv_plag_pidini,ibuff)
279  psendbuffi(iaiv+1) = paivsrc(aiv_plag_regini,ibuff)
280  psendbuffi(iaiv+2) = iregdes
281  psendbuffi(iaiv+3) = icellsdes
282  psendbuffi(iaiv+4) = indexides
283  psendbuffi(iaiv+5) = indexjdes
284  psendbuffi(iaiv+6) = indexkdes
285  psendbuffi(iaiv+7) = paivsrc(aiv_plag_burnstat,ibuff)
286  psendbuffi(iaiv+8) = paivsrc(aiv_plag_status,ibuff)
287 
288 #ifdef PLAG_MPI_DEBUG
289  IF( nbuffsizesrc /=0 )&
290  WRITE(stdout,*) ' PLAG_BufferDataSend-INT: procDes, iBuff, iAiv, iCellsDes, indexIDes, indexJDes, indexKDes = ',&
291  procdes, ibuff, iaiv, icellsdes, indexides, indexjdes, indexkdes
292 #endif
293 
294  ENDDO ! iBuff
295 
296 !- Real variables -------------------------------------------------------------
297 
298  DO ibuff = 1, nbuffsizesrc
299 
300 ! ---- compute shifts ---------------------------------------------------------
301 
302  ibuffsend = ndimr*(ibuff-1) +1
303  icv = ibuffsend
304  irhs = ibuffsend +ncv
305  irhssum = ibuffsend +2*ncv
306  icvold = ibuffsend +3*ncv
307  iarv = ibuffsend +4*ncv
308  iarvold = ibuffsend +4*ncv +narv
309 
310 #ifdef PLAG_MPI_DEBUG
311  IF( nbuffsizesrc /=0 )&
312  WRITE(stdout,*) ' PLAG_BufferDataSend-REAL: procDes,iBuff, iBuffSend, iCv, iRhs, iRhsSum, iCvOld, iArv, iArvOld = ',&
313  procdes,ibuff, ibuffsend, icv, irhs, irhssum, icvold, iarv, iarvold
314 #endif
315 
316 ! ---- load real data buffers: cv ---------------------------------------------
317 
318  psendbuffr(icv ) = pcvsrc(cv_plag_xmom,ibuff)
319  psendbuffr(icv+1) = pcvsrc(cv_plag_ymom,ibuff)
320  psendbuffr(icv+2) = pcvsrc(cv_plag_zmom,ibuff)
321  psendbuffr(icv+3) = pcvsrc(cv_plag_ener,ibuff)
322  psendbuffr(icv+4) = pcvsrc(cv_plag_xpos,ibuff)
323  psendbuffr(icv+5) = pcvsrc(cv_plag_ypos,ibuff)
324  psendbuffr(icv+6) = pcvsrc(cv_plag_zpos,ibuff)
325  psendbuffr(icv+7) = pcvsrc(cv_plag_enervapor,ibuff)
326  DO icont = 1, ncont
327  psendbuffr(icv+(cv_plag_last-1)+icont) = pcvsrc(pcvplagmass(icont),ibuff)
328  ENDDO ! iCont
329 
330 ! -- load real data buffers: rhs
331 
332  psendbuffr(irhs ) = prhssrc(cv_plag_xmom,ibuff)
333  psendbuffr(irhs+1) = prhssrc(cv_plag_ymom,ibuff)
334  psendbuffr(irhs+2) = prhssrc(cv_plag_zmom,ibuff)
335  psendbuffr(irhs+3) = prhssrc(cv_plag_ener,ibuff)
336  psendbuffr(irhs+4) = prhssrc(cv_plag_xpos,ibuff)
337  psendbuffr(irhs+5) = prhssrc(cv_plag_ypos,ibuff)
338  psendbuffr(irhs+6) = prhssrc(cv_plag_zpos,ibuff)
339  psendbuffr(irhs+7) = prhssrc(cv_plag_enervapor,ibuff)
340  DO icont = 1, ncont
341  psendbuffr(irhs+(cv_plag_last-1)+icont) = prhssrc(pcvplagmass(icont),ibuff)
342  ENDDO ! iCont
343 
344 !-- load real data buffers: rhsSum
345 
346  psendbuffr(irhssum ) = prhssumsrc(cv_plag_xmom,ibuff)
347  psendbuffr(irhssum+1) = prhssumsrc(cv_plag_ymom,ibuff)
348  psendbuffr(irhssum+2) = prhssumsrc(cv_plag_zmom,ibuff)
349  psendbuffr(irhssum+3) = prhssumsrc(cv_plag_ener,ibuff)
350  psendbuffr(irhssum+4) = prhssumsrc(cv_plag_xpos,ibuff)
351  psendbuffr(irhssum+5) = prhssumsrc(cv_plag_ypos,ibuff)
352  psendbuffr(irhssum+6) = prhssumsrc(cv_plag_zpos,ibuff)
353  psendbuffr(irhssum+7) = prhssumsrc(cv_plag_enervapor,ibuff)
354  DO icont = 1, ncont
355  psendbuffr(irhssum+(cv_plag_last-1)+icont) = prhssumsrc(pcvplagmass(icont),ibuff)
356  ENDDO ! iCont
357 
358 !-- load real data buffers: cvOld
359 
360  psendbuffr(icvold ) = pcvoldsrc(cv_plag_xmom,ibuff)
361  psendbuffr(icvold+1) = pcvoldsrc(cv_plag_ymom,ibuff)
362  psendbuffr(icvold+2) = pcvoldsrc(cv_plag_zmom,ibuff)
363  psendbuffr(icvold+3) = pcvoldsrc(cv_plag_ener,ibuff)
364  psendbuffr(icvold+4) = pcvoldsrc(cv_plag_xpos,ibuff)
365  psendbuffr(icvold+5) = pcvoldsrc(cv_plag_ypos,ibuff)
366  psendbuffr(icvold+6) = pcvoldsrc(cv_plag_zpos,ibuff)
367  psendbuffr(icvold+7) = pcvoldsrc(cv_plag_enervapor,ibuff)
368  DO icont = 1, ncont
369  psendbuffr(icvold+(cv_plag_last-1)+icont) = pcvoldsrc(pcvplagmass(icont),ibuff)
370  ENDDO ! iCont
371 
372 !-- load real data buffers: arv
373 
374  psendbuffr(iarv ) = parvsrc(arv_plag_spload,ibuff)
375  psendbuffr(iarv+1) = parvsrc(arv_plag_distot,ibuff)
376 
377 !-- load real data buffers: arvOld
378 
379  psendbuffr(iarvold ) = parvoldsrc(arv_plag_spload,ibuff)
380  psendbuffr(iarvold+1) = parvoldsrc(arv_plag_distot,ibuff)
381 
382  ENDDO ! iBuff
383 
384 #ifdef MPI
385 
386 !--- integer
387 
388  tagdesi = regions(iregdes)%localNumber &
389  + plag_tag_shift +mpi_patchoff*ipatchdes*iregdes + procdes +1
390 
391  IF(tagdesi .gt. global%mpiTagMax) tagdesi = mod(tagdesi,global%mpiTagMax)
392 #ifdef PLAG_MPI_DEBUG
393  IF( nbuffsizesrc /=0 )&
394  WRITE(stdout,*) ' PLAG_BufferDataSend-Integer: iReg, iRegDes, procDes, tagDesI = ',&
395  ireg, iregdes, procdes,tagdesi
396 #endif
397 
398  CALL mpi_isend( psendbuffi,nsendbuffi,mpi_integer, &
399  procdes,tagdesi,global%mpiComm, &
400  pplag%requestsI(irequestplag),global%mpierr )
401 
402  IF (global%mpierr /= err_none) &
403  CALL errorstop( global,err_mpi_trouble,__line__ )
404 
405 !--- real
406 
407  tagdesr = regions(iregdes)%localNumber &
408  + plag_tag_shift +mpi_patchoff*ipatchdes*iregdes + procdes +2
409 
410  IF(tagdesr .gt. global%mpiTagMax) tagdesr = mod(tagdesr,global%mpiTagMax)
411 #ifdef PLAG_MPI_DEBUG
412  IF( nbuffsizesrc /=0 )&
413  WRITE(stdout,*) ' PLAG_BufferDataSend-Real: iReg, iRegDes, procDes, tagDesR = ',&
414  ireg, iregdes, procdes,tagdesr
415 #endif
416 
417  CALL mpi_isend( psendbuffr,nsendbuffr,mpi_rfreal, &
418  procdes,tagdesr,global%mpiComm, &
419  pplag%requestsR(irequestplag),global%mpierr )
420 
421  IF (global%mpierr /= err_none) &
422  CALL errorstop( global,err_mpi_trouble,__line__ )
423 
424 #endif
425 
426  ENDIF ! regions
427  ENDIF ! bcType
428 
429 999 CONTINUE
430 
431  ENDDO ! iPatch
432 
433 ! finalize --------------------------------------------------------------------
434 
435  CALL deregisterfunction( global )
436 
437 END SUBROUTINE plag_bufferdatasend
438 
439 !******************************************************************************
440 !
441 ! RCS Revision history:
442 !
443 ! $Log: PLAG_BufferDataSend.F90,v $
444 ! Revision 1.6 2009/03/02 00:19:36 mtcampbe
445 ! Added some ifdefs around Rocflo to disable particle injection on INFLOW
446 ! boundaries and added some checks around MPI tags utilizing a new global
447 ! data item, global%mpiTagMax.
448 !
449 ! Revision 1.5 2008/12/06 08:44:32 mtcampbe
450 ! Updated license.
451 !
452 ! Revision 1.4 2008/11/19 22:17:45 mtcampbe
453 ! Added Illinois Open Source License/Copyright
454 !
455 ! Revision 1.3 2006/04/07 15:19:23 haselbac
456 ! Removed tabs
457 !
458 ! Revision 1.2 2005/05/31 21:37:32 fnajjar
459 ! Added ARV_PLAG_DISTOT for proper IO capabilities
460 !
461 ! Revision 1.1 2004/12/01 20:56:56 fnajjar
462 ! Initial revision after changing case
463 !
464 ! Revision 1.6 2004/04/09 23:04:12 fnajjar
465 ! Added AIV_PLAG_STATUS to buffers being sent and received
466 !
467 ! Revision 1.5 2004/03/21 00:43:32 fnajjar
468 ! Fixed tags to be smaller number since Frost run-time system complains about size
469 !
470 ! Revision 1.4 2004/03/12 23:42:31 fnajjar
471 ! Bug fix for pSendBuffR with incorrect assignment
472 !
473 ! Revision 1.3 2004/03/06 21:25:05 fnajjar
474 ! Added PLAG_TAG_SHIFT to MPI-based communication tags
475 !
476 ! Revision 1.2 2004/02/13 23:22:07 fnajjar
477 ! Included new cv and aiv definitions for particle burning module
478 !
479 ! Revision 1.1 2003/02/21 17:09:18 fnajjar
480 ! Initial import
481 !
482 !******************************************************************************
483 
484 
485 
486 
487 
488 
489 
subroutine rflo_getpatchdirection(patch, idir, jdir, kdir)
INTEGER function indijkmap(i, j, k, mapMat, iOffset, ijOffset)
Definition: ModIndexing.F90:67
subroutine plag_bufferdatasend(regions, iReg)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine rflo_getpatchindices(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine rflo_getpatchmapping(lb, lbs, l1SrcDir, l2SrcDir, align, idir, jdir, kdir, idirSrc, jdirSrc, kdirSrc, ibeg, iend, jbeg, jend, kbeg, kend, ibegSrc, iendSrc, jbegSrc, jendSrc, kbegSrc, kendSrc, mapMat)
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine getijk(ijk, iOffset, ijOffset, nDumCells, i, j, k)
Definition: ModIndexing.F90:54