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