da_wv_patch_to_global_2d.inc

References to this file elsewhere.
1 subroutine da_wv_patch_to_global_2d(vlocal, vglobal,    &
2                                   domdesc,            &
3                                   ids, ide, jds, jde, &
4                                   ims, ime, jms, jme, &
5                                   ips, ipe, jps, jpe)
6 
7    !---------------------------------------------------------------------
8    ! Purpose: Gathers local 2D array vlocal into global array vglobal.  
9    ! Assumes that "k" is not 
10    ! decomposed.  End indicies in the "k" dimension are inferred from 
11    ! mz, which can be less than kde.  
12    !
13    ! Must be called by all MPI tasks.
14    !---------------------------------------------------------------------  
15 
16    implicit none
17 
18    real,              intent(in)  :: vlocal(:,:)
19    real,              intent(out) :: vglobal(:,:)
20    integer,           intent(in)  :: domdesc
21    integer,           intent(in)  :: ids, ide, jds, jde, &
22                                       ims, ime, jms, jme, &
23                                       ips, ipe, jps, jpe
24 #ifdef DM_PARALLEL
25    ! Local declarations
26    integer :: kds, kms, kps, mz
27    real, allocatable :: vlocal3d(:,:,:), vglobal3d(:,:,:)
28 
29    kds=1; kms=1; kps=1; mz=1
30    allocate(vlocal3d (ims:ime, jms:jme, 1), &
31             vglobal3d(ids:ide, jds:jde, 1))
32    ! get rid of copies later
33    vlocal3d(:,:,1) = vlocal(:,:)
34    call da_wv_patch_to_global_3d(vlocal3d, vglobal3d,     &
35                               domdesc, mz,             &
36                               ids, ide, jds, jde, kds, &
37                               ims, ime, jms, jme, kms, &
38                               ips, ipe, jps, jpe, kps)
39    if (rootproc) then
40       vglobal(:,:) = vglobal3d(:,:,1)
41    end if
42    deallocate(vlocal3d, vglobal3d)
43 #endif
44 
45 end subroutine da_wv_patch_to_global_2d
46 
47