Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PLAG_CECellsSendRecvWrapper.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: driver to communicate PLAG buffer data in corner and edge cells
26 ! for adjacent regions on different processors.
27 !
28 ! Description: none.
29 !
30 ! Input:
31 ! regions = data of all regions.
32 !
33 ! Output: buffer data for metrics.
34 !
35 ! Notes: None.
36 !
37 !******************************************************************************
38 !
39 ! $Id: PLAG_CECellsSendRecvWrapper.F90,v 1.5 2008/12/06 08:44:33 mtcampbe Exp $
40 !
41 ! Copyright: (c) 2004 by the University of Illinois
42 !
43 !******************************************************************************
44 
45 SUBROUTINE plag_cecellssendrecvwrapper( regions )
46 
47  USE moddatatypes
48  USE moderror
49  USE modparameters
50  USE moddatastruct, ONLY : t_region, t_level, t_dcelltransf
51  USE modglobal, ONLY : t_global
52  USE modpartlag, ONLY : t_plag
53  USE modmpi
54 
56 
63 
64  IMPLICIT NONE
65 
66 ! ******************************************************************************
67 ! Definitions and declarations
68 ! ******************************************************************************
69 
70 ! ==============================================================================
71 ! Arguments
72 ! ==============================================================================
73 
74  TYPE(t_region), POINTER :: regions(:)
75 
76 ! ==============================================================================
77 ! Locals
78 ! ==============================================================================
79 
80  CHARACTER(CHRLEN) :: rcsidentstring
81 
82  INTEGER :: errorflag,ijk,ilev,ir,ireg,naiv,narv,nbuffrecvi,nbuffrecvr,&
83  nbuffsendi,nbuffsendr,ncv,ndimbuffi,ndimbuffr,ndv,ntv
84  INTEGER :: ibuffi,ibuffr
85 
86  TYPE(t_level), POINTER :: plevel
87  TYPE(t_dcelltransf), POINTER :: psendeccell, precveccell
88  TYPE(t_plag), POINTER :: pplag
89  TYPE(t_global), POINTER :: global
90 
91 ! ******************************************************************************
92 ! Start
93 ! ******************************************************************************
94 
95  rcsidentstring = '$RCSfile: PLAG_CECellsSendRecvWrapper.F90,v $ $Revision: 1.5 $'
96 
97  global => regions(1)%global
98 
99  CALL registerfunction( global,'PLAG_CECellsSendRecv',&
100  'PLAG_CECellsSendRecvWrapper.F90' )
101 
102 ! ******************************************************************************
103 ! Set infrastructure for MPI-based communication
104 ! ******************************************************************************
105 
106  DO ireg = 1, global%nRegions
107  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
108  regions(ireg)%active==active .AND. & ! on my processor
109  global%plagUsed .EQV. .true. .AND. & ! plag active
110  global%nProcAlloc > 1 ) THEN ! only if multiple processors
111 
112  DO ilev=1,regions(ireg)%nGridLevels
113  pplag => regions(ireg)%levels(ilev)%plag
114 
115 ! =============================================================================
116 ! Set dimensions
117 ! =============================================================================
118 
119  pplag%nRequestsCECells = 0
120 
121  naiv = pplag%nAiv
122  narv = pplag%nArv
123 
124  ncv = pplag%nCv
125  ndv = pplag%nDv
126  ntv = pplag%nTv
127 
128  ndimbuffi = naiv
129  ndimbuffr = 2*narv +4*ncv
130 
131 ! =============================================================================
132 ! Loop over all regions
133 ! =============================================================================
134 
135  DO ir=1,global%nRegions
136  psendeccell => regions(ireg)%levels(ilev)%sendEcCells(ir)
137  precveccell => regions(ireg)%levels(ilev)%recvEcCells(ir)
138 
139 ! -----------------------------------------------------------------------------
140 ! Initialize buffer sizes
141 ! -----------------------------------------------------------------------------
142 
143  IF ( psendeccell%nCells > 0 ) psendeccell%nBuffSizePlag = 0
144 
145  IF ( precveccell%nCells > 0 ) precveccell%nBuffSizePlag = 0
146 
147 ! -----------------------------------------------------------------------------
148 ! Set request sizes
149 ! -----------------------------------------------------------------------------
150 
151  IF ( psendeccell%nCells > 0 ) &
152  pplag%nRequestsCECells = pplag%nRequestsCECells +1
153 
154  psendeccell%iRequestPlag = pplag%nRequestsCECells
155 
156  IF ( precveccell%nCells > 0 ) &
157  precveccell%iRequestPlag = -999999
158 
159  ENDDO ! ir
160 
161 ! -----------------------------------------------------------------------------
162 ! Allocate requests
163 ! -----------------------------------------------------------------------------
164 
165  ALLOCATE( pplag%requestsCECells(pplag%nRequestsCECells), &
166  stat=errorflag )
167  global%error = errorflag
168  IF ( global%error /= err_none ) &
169  CALL errorstop( global,err_allocate,__line__, &
170  'pPlag%requestsCECells' )
171 
172  ALLOCATE( pplag%requestsCECellsI(pplag%nRequestsCECells), &
173  stat=errorflag )
174  global%error = errorflag
175  IF ( global%error /= err_none ) &
176  CALL errorstop( global,err_allocate,__line__, &
177  'pPlag%requestsCECellsI' )
178 
179  ALLOCATE( pplag%requestsCECellsR(pplag%nRequestsCECells), &
180  stat=errorflag )
181  global%error = errorflag
182  IF ( global%error /= err_none ) &
183  CALL errorstop( global,err_allocate,__line__, &
184  'pPlag%requestsCECellsR' )
185 
186  ENDDO ! iLev
187  ENDIF ! regions
188  ENDDO ! iReg
189 
190 ! ******************************************************************************
191 ! Communicate buffer size
192 ! ******************************************************************************
193 
194 ! =============================================================================
195 ! Send buffer size
196 ! =============================================================================
197 
198  DO ireg = 1, global%nRegions
199  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
200  regions(ireg)%active==active .AND. & ! on my processor
201  global%plagUsed .EQV. .true. .AND. & ! plag active
202  global%nProcAlloc > 1 ) THEN ! only if multiple processors
203 
204 #ifdef PLAG_CECELLS_MPI_DEBUG
205  IF (ireg==1) THEN
206  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
207  WRITE(*,*) ' Entering PLAG_CECellsSendSize: pid, iReg = ',global%myProcId, ireg
208  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
209  ENDIF ! iReg
210 #endif
211 
212  CALL plag_cecellssendsize(regions, ireg)
213  ENDIF ! regions
214  ENDDO ! iReg
215 
216 ! =============================================================================
217 ! Receive buffer size
218 ! =============================================================================
219 
220  DO ireg = 1, global%nRegions
221  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
222  regions(ireg)%active==active .AND. & ! on my processor
223  global%plagUsed .EQV. .true. .AND. & ! plag active
224  global%nProcAlloc > 1 ) THEN ! only if multiple processors
225 
226 #ifdef PLAG_CECELLS_MPI_DEBUG
227  IF (ireg==1) THEN
228  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
229  WRITE(*,*) ' Entering PLAG_CECellsRecvSize: pid, iReg = ',global%myProcId, ireg
230  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
231  ENDIF ! iReg
232 #endif
233 
234  CALL plag_cecellsrecvsize(regions, ireg)
235  ENDIF ! regions
236  ENDDO ! iReg
237 
238 ! =============================================================================
239 ! Wait for messages of buffer size being received by other processors
240 ! =============================================================================
241 
242  DO ireg = 1, global%nRegions
243  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
244  regions(ireg)%active==active .AND. & ! on my processor
245  global%plagUsed .EQV. .true. .AND. & ! plag active
246  global%nProcAlloc > 1 ) THEN ! only if multiple processors
247 
248 #ifdef PLAG_CECELLS_MPI_DEBUG
249  IF (ireg==1) THEN
250  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
251  WRITE(*,*) ' Entering PLAG_CECellsClearRequestsSize: pid, iReg = ',global%myProcId, ireg
252  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
253  ENDIF ! iReg
254 #endif
255 
256  CALL plag_cecellsclearrequestssize(regions, ireg)
257  ENDIF ! regions
258  ENDDO ! iReg
259 
260 ! ******************************************************************************
261 ! Allocate buffers for MPI-based communication
262 ! ******************************************************************************
263 
264  DO ireg = 1, global%nRegions
265  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
266  regions(ireg)%active==active .AND. & ! on my processor
267  global%plagUsed .EQV. .true. .AND. & ! plag active
268  global%nProcAlloc > 1 ) THEN ! only if multiple processors
269 
270  DO ilev=1,regions(ireg)%nGridLevels
271  pplag => regions(ireg)%levels(ilev)%plag
272  DO ir=1,global%nRegions
273  psendeccell => regions(ireg)%levels(ilev)%sendEcCells(ir)
274  precveccell => regions(ireg)%levels(ilev)%recvEcCells(ir)
275 
276 ! -----------------------------------------------------------------------------
277 ! Allocate send buffers
278 ! -----------------------------------------------------------------------------
279 
280  IF ( psendeccell%nCells > 0 ) THEN
281  nbuffsendi = ndimbuffi*psendeccell%nBuffSizePlag
282  nbuffsendr = ndimbuffr*psendeccell%nBuffSizePlag
283 
284  IF ( psendeccell%nBuffSizePlag > 0 ) THEN
285 
286 #ifdef PLAG_CECELLS_MPI_DEBUG
287  IF(ireg==1 .OR. ireg==10)THEN
288  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
289  WRITE(*,*) ' Allocating Send Data Buffers: pid, iReg, ir, nBuffSizePlag, nBuffSendI, nBuffSendR = ', &
290  global%myProcId, ireg, ir, psendeccell%nBuffSizePlag, nbuffsendi, nbuffsendr
291  ENDIF
292 #endif
293 
294  ALLOCATE( psendeccell%buffPlagI(nbuffsendi),stat=errorflag )
295  global%error = errorflag
296  IF ( global%error /= err_none ) &
297  CALL errorstop( global,err_allocate,__line__, &
298  'pSendEcCell%buffPlagI' )
299 
300  ALLOCATE( psendeccell%buffPlagR(nbuffsendr),stat=errorflag )
301  global%error = errorflag
302  IF ( global%error /= err_none ) &
303  CALL errorstop( global,err_allocate,__line__, &
304  'pSendEcCell%buffPlagR' )
305 
306 ! -----------------------------------------------------------------------------
307 ! Initialize send buffers
308 ! -----------------------------------------------------------------------------
309 
310  DO ibuffi = 1, nbuffsendi
311  psendeccell%buffPlagI(ibuffi) = 0
312  ENDDO ! iBuffI
313 
314  DO ibuffr= 1, nbuffsendr
315  psendeccell%buffPlagR(ibuffr) = 0.0_rfreal
316  ENDDO ! iBuffR
317  ENDIF !pSendEcCell%nBuffSizePlag
318 
319  ENDIF ! pSendEcCell%nCells
320 
321 ! -----------------------------------------------------------------------------
322 ! Allocate receive buffers
323 ! -----------------------------------------------------------------------------
324 
325  IF ( precveccell%nCells > 0 ) THEN
326  nbuffrecvi = ndimbuffi*precveccell%nBuffSizePlag
327  nbuffrecvr = ndimbuffr*precveccell%nBuffSizePlag
328 
329  IF ( precveccell%nBuffSizePlag > 0 ) THEN
330 
331 #ifdef PLAG_CECELLS_MPI_DEBUG
332  IF (ireg==1 .OR. ireg==10) THEN
333  WRITE(*,*) ' Allocating Receive Data Buffers: pid, iReg, ir, nBuffSizePlag, nBuffRecvI, nBuffRecvR = ', &
334  global%myProcId, ireg, ir, precveccell%nBuffSizePlag, nbuffrecvi, nbuffrecvr
335  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
336  ENDIF ! iReg
337 #endif
338 
339  ALLOCATE( precveccell%buffPlagI(nbuffrecvi),stat=errorflag )
340  global%error = errorflag
341  IF ( global%error /= err_none ) &
342  CALL errorstop( global,err_allocate,__line__, &
343  'pRecvEcCell%buffPlagI' )
344 
345  ALLOCATE( precveccell%buffPlagR(nbuffrecvr),stat=errorflag )
346  global%error = errorflag
347  IF ( global%error /= err_none ) &
348  CALL errorstop( global,err_allocate,__line__, &
349  'pRecvEcCell%buffPlagR' )
350 
351 ! -----------------------------------------------------------------------------
352 ! Initialize receive buffers
353 ! -----------------------------------------------------------------------------
354 
355  DO ibuffi = 1, nbuffrecvi
356  precveccell%buffPlagI(ibuffi) = 0
357  ENDDO ! iBuffI
358 
359  DO ibuffr= 1, nbuffrecvr
360  precveccell%buffPlagR(ibuffr) = 0.0_rfreal
361  ENDDO ! iBuffR
362  ENDIF ! pRecvEcCell%nBuffSizePlag
363 
364  ENDIF ! pRecvEcCell%nCell
365  ENDDO ! ir
366  ENDDO ! iLev
367  ENDIF ! regions
368  ENDDO ! iReg
369 
370 ! ******************************************************************************
371 ! Synchronize through an MPI barrier
372 ! ******************************************************************************
373 
374 #ifdef MPI
375  CALL mpi_barrier( global%mpiComm,global%mpierr )
376  IF ( global%mpierr /= err_none ) &
377  CALL errorstop( global,err_mpi_trouble,__line__ )
378 #endif
379 
380 ! ******************************************************************************
381 ! Communicate buffer data
382 ! ******************************************************************************
383 
384 ! =============================================================================
385 ! Send buffer data
386 ! =============================================================================
387 
388  DO ireg = 1, global%nRegions
389  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
390  regions(ireg)%active==active .AND. & ! on my processor
391  global%plagUsed .EQV. .true. .AND. & ! plag active
392  global%nProcAlloc > 1 ) THEN ! only if multiple processors
393 
394 #ifdef PLAG_CECELLS_MPI_DEBUG
395  IF (ireg==1) THEN
396  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
397  WRITE(*,*) ' Entering PLAG_CECellsSendData: pid, iReg = ',global%myProcId, ireg
398  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
399  ENDIF ! iReg
400 #endif
401 
402  CALL plag_cecellssenddata(regions, ireg)
403  ENDIF ! regions
404  ENDDO ! iReg
405 
406 ! =============================================================================
407 ! receive buffer size ---------------------------------------------------------
408 ! =============================================================================
409 
410  DO ireg = 1, global%nRegions
411  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
412  regions(ireg)%active==active .AND. & ! on my processor
413  global%plagUsed .EQV. .true. .AND. & ! plag active
414  global%nProcAlloc > 1 ) THEN ! only if multiple processors
415 
416 #ifdef PLAG_CECELLS_MPI_DEBUG
417  IF (ireg==1) THEN
418  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
419  WRITE(*,*) ' Entering PLAG_CECellsRecvData: pid, iReg = ',global%myProcId, ireg
420  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
421  ENDIF ! iReg
422 #endif
423 
424  CALL plag_cecellsrecvdata(regions, ireg)
425 
426  ENDIF ! regions
427  ENDDO ! iReg
428 
429 ! =============================================================================
430 ! Wait for message of buffer data being received by other processors
431 ! =============================================================================
432 
433  DO ireg = 1, global%nRegions
434  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
435  regions(ireg)%active==active .AND. & ! on my processor
436  global%plagUsed .EQV. .true. .AND. & ! plag active
437  global%nProcAlloc > 1 ) THEN ! only if multiple processors
438 
439 #ifdef PLAG_CECELLS_MPI_DEBUG
440  IF (ireg==1) THEN
441  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
442  WRITE(*,*) ' Entering PLAG_CECellsClearRequestsData: pid, iReg = ',global%myProcId, ireg
443  WRITE(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
444  ENDIF ! iReg
445 #endif
446 
447  CALL plag_cecellsclearrequestsdata(regions, ireg)
448  ENDIF ! regions
449  ENDDO ! iReg
450 
451 ! ******************************************************************************
452 ! synchronize through an MPI barrier
453 ! ******************************************************************************
454 
455 #ifdef MPI
456  CALL mpi_barrier( global%mpiComm,global%mpierr )
457  IF ( global%mpierr /= err_none ) &
458  CALL errorstop( global,err_mpi_trouble,__line__ )
459 #endif
460 
461 ! ******************************************************************************
462 ! Deallocate communicaton buffers
463 ! ******************************************************************************
464 
465  DO ireg = 1, global%nRegions
466  IF ( regions(ireg)%procid==global%myProcid .AND. & ! region active and
467  regions(ireg)%active==active .AND. & ! on my processor
468  global%plagUsed .EQV. .true. .AND. & ! plag active
469  global%nProcAlloc > 1 ) THEN ! only if multiple processors
470 
471  DO ilev=1,regions(ireg)%nGridLevels
472  pplag => regions(ireg)%levels(ilev)%plag
473 
474  DO ir=1,global%nRegions
475  psendeccell => regions(ireg)%levels(ilev)%sendEcCells(ir)
476  precveccell => regions(ireg)%levels(ilev)%recvEcCells(ir)
477 
478 ! -----------------------------------------------------------------------------
479 ! Deallocate send buffers
480 ! -----------------------------------------------------------------------------
481 
482  IF ( psendeccell%nCells > 0 ) THEN
483  IF ( psendeccell%nBuffSizePlag > 0 ) THEN
484  DEALLOCATE( psendeccell%buffPlagI, stat=errorflag )
485  global%error = errorflag
486  IF ( global%error /= err_none ) &
487  CALL errorstop( global,err_deallocate,__line__, &
488  'pSendEcCell%buffCECellsPlagI' )
489 
490  DEALLOCATE( psendeccell%buffPlagR, stat=errorflag )
491  global%error = errorflag
492  IF ( global%error /= err_none ) &
493  CALL errorstop( global,err_deallocate,__line__, &
494  'pSendEcCell%buffCECellsPlagR' )
495  ENDIF ! pSendEcCell%nBuffSizePlag
496  ENDIF ! pSendEcCell%nCells
497 
498 ! -----------------------------------------------------------------------------
499 ! Deallocate receive buffers
500 ! -----------------------------------------------------------------------------
501 
502  IF ( precveccell%nCells > 0 ) THEN
503  IF ( precveccell%nBuffSizePlag > 0 ) THEN
504  DEALLOCATE( precveccell%buffPlagI, stat=errorflag )
505  global%error = errorflag
506  IF ( global%error /= err_none ) &
507  CALL errorstop( global,err_deallocate,__line__, &
508  'pRecvEcCell%buffPlagI' )
509 
510  DEALLOCATE( precveccell%buffPlagR, stat=errorflag )
511  global%error = errorflag
512  IF ( global%error /= err_none ) &
513  CALL errorstop( global,err_deallocate,__line__, &
514  'pRecvEcCell%buffPlagR' )
515  ENDIF ! pRecvEcCell%nBuffSizePlag
516  ENDIF ! pRecvEcCell%nCell
517  ENDDO ! ir
518 
519 ! -----------------------------------------------------------------------------
520 ! Deallocate requests
521 ! -----------------------------------------------------------------------------
522 
523  DEALLOCATE(pplag%requestsCECells, stat=errorflag )
524  global%error = errorflag
525  IF ( global%error /= err_none ) &
526  CALL errorstop( global,err_deallocate,__line__ )
527 
528  DEALLOCATE(pplag%requestsCECellsI, stat=errorflag )
529  global%error = errorflag
530  IF ( global%error /= err_none ) &
531  CALL errorstop( global,err_deallocate,__line__ )
532 
533  DEALLOCATE(pplag%requestsCECellsR, stat=errorflag )
534  global%error = errorflag
535  IF ( global%error /= err_none ) &
536  CALL errorstop( global,err_deallocate,__line__ )
537 
538  ENDDO ! iLev
539 
540  ENDIF ! regions
541  ENDDO ! iReg
542 
543 ! ******************************************************************************
544 ! Synchronize through an MPI barrier
545 ! ******************************************************************************
546 
547 #ifdef MPI
548  CALL mpi_barrier( global%mpiComm,global%mpierr )
549  IF ( global%mpierr /= err_none ) &
550  CALL errorstop( global,err_mpi_trouble,__line__ )
551 #endif
552 
553 ! ******************************************************************************
554 ! Finalize
555 ! ******************************************************************************
556 
557  CALL deregisterfunction( global )
558 
559 END SUBROUTINE plag_cecellssendrecvwrapper
560 
561 !******************************************************************************
562 !
563 ! RCS Revision history:
564 !
565 ! $Log: PLAG_CECellsSendRecvWrapper.F90,v $
566 ! Revision 1.5 2008/12/06 08:44:33 mtcampbe
567 ! Updated license.
568 !
569 ! Revision 1.4 2008/11/19 22:17:45 mtcampbe
570 ! Added Illinois Open Source License/Copyright
571 !
572 ! Revision 1.3 2006/04/07 15:19:23 haselbac
573 ! Removed tabs
574 !
575 ! Revision 1.2 2005/09/09 17:35:29 fnajjar
576 ! Bug fix for initialization of recv buffers
577 !
578 ! Revision 1.1 2004/12/01 20:57:19 fnajjar
579 ! Initial revision after changing case
580 !
581 ! Revision 1.3 2004/03/20 22:31:25 fnajjar
582 ! Initialized buffer sizes after every RK stage
583 !
584 ! Revision 1.2 2004/03/18 21:40:58 fnajjar
585 ! Added calls to routines for sending-receiving MPI-based buffer data
586 !
587 ! Revision 1.1 2004/03/10 23:15:33 fnajjar
588 ! Initial import of main MPI-based wrapper
589 !
590 !******************************************************************************
591 
592 
593 
594 
595 
596 
597 
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine plag_cecellsrecvdata(regions, iReg)
subroutine plag_cecellssenddata(regions, iReg)
subroutine plag_cecellsclearrequestssize(regions, iReg)
subroutine plag_cecellsrecvsize(regions, iReg)
subroutine plag_cecellssendrecvwrapper(regions)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine plag_cecellsclearrequestsdata(regions, iReg)
subroutine plag_cecellssendsize(regions, iReg)
subroutine deregisterfunction(global)
Definition: ModError.F90:469