55
56
59
61# ifdef DISTRIBUTE
63# endif
64
65
66
67 integer, intent(in) :: ng, tile
68 integer, intent(in) :: LBi, UBi, LBj, UBj
69 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
70
71# ifdef ASSUMED_SHAPE
72 real(r8), intent(in) :: bvf(LBi:,LBj:,0:)
73 real(r8), intent(out) :: Akt(LBi:,LBj:,0:,:)
74 real(r8), intent(out) :: Akv(LBi:,LBj:,0:)
75# else
76 real(r8), intent(in) :: bvf(LBi:UBi,LBj:UBj,0:N(ng))
77 real(r8), intent(out) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
78 real(r8), intent(out) :: Akv(LBi:UBi,LBj:UBj,0:N(ng))
79# endif
80
81
82
83 integer :: i, itrc, j, k
84
85 real(r8) :: cff
86
87# include "set_bounds.h"
88
89
90
91
92
93
95 DO j=jstr,jend
96 DO i=istr,iend
98 IF (bvf(i,j,k).lt.0.0_r8) THEN
101# ifdef SALINITY
103# endif
104 ELSE IF (bvf(i,j,k).eq.0.0_r8) THEN
107# ifdef SALINITY
109# endif
110 ELSE
113 akv(i,j,k)=akt(i,j,k,
itemp)
114# ifdef SALINITY
116# endif
117 END IF
118 END DO
119 END DO
120 END DO
121
122
123
124
125
128 & lbi, ubi, lbj, ubj, 0,
n(ng), &
129 & akv)
132 & lbi, ubi, lbj, ubj, 0,
n(ng), &
133 & akt(:,:,:,itrc))
134 END DO
135 END IF
136
137# ifdef DISTRIBUTE
139 & lbi, ubi, lbj, ubj, 0,
n(ng), &
142 & akv)
144 & lbi, ubi, lbj, ubj, 0,
n(ng), 1,
nat, &
147 & akt)
148# endif
149
150 RETURN
subroutine exchange_w3d_tile(ng, tile, lbi, ubi, lbj, ubj, lbk, ubk, a)
integer, dimension(:), allocatable n
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
real(r8), dimension(:,:), allocatable akt_bak
real(r8), dimension(:), allocatable akv_bak
subroutine mp_exchange4d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, nghost, ew_periodic, ns_periodic, a, b, c)
subroutine mp_exchange3d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, nghost, ew_periodic, ns_periodic, a, b, c, d)