98 & LBi, UBi, LBj, UBj, &
99 & IminS, ImaxS, JminS, JmaxS, &
102# if defined AVERAGES || \
103 (defined AD_AVERAGES && defined ADJOINT) || \
104 (defined rp_averages && defined tl_ioms) || \
105 (defined tl_averages && defined tangent)
106 & pmask_avg, rmask_avg, &
107 & umask_avg, vmask_avg, &
110 & pmask_dia, rmask_dia, &
111 & umask_dia, vmask_dia, &
113 & pmask_full, rmask_full, &
114 & umask_full, vmask_full)
128 integer,
intent(in) :: ng, tile, model
129 integer,
intent(in) :: LBi, UBi, LBj, UBj
130 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
133 real(r8),
intent(in) :: pmask(LBi:,LBj:)
134 real(r8),
intent(in) :: rmask(LBi:,LBj:)
135 real(r8),
intent(in) :: umask(LBi:,LBj:)
136 real(r8),
intent(in) :: vmask(LBi:,LBj:)
137# if defined AVERAGES || \
138 (defined ad_averages && defined adjoint) || \
139 (defined rp_averages && defined tl_ioms) || \
140 (defined tl_averages && defined tangent)
141 real(r8),
intent(inout) :: pmask_avg(LBi:,LBj:)
142 real(r8),
intent(inout) :: rmask_avg(LBi:,LBj:)
143 real(r8),
intent(inout) :: umask_avg(LBi:,LBj:)
144 real(r8),
intent(inout) :: vmask_avg(LBi:,LBj:)
147 real(r8),
intent(inout) :: pmask_dia(LBi:,LBj:)
148 real(r8),
intent(inout) :: rmask_dia(LBi:,LBj:)
149 real(r8),
intent(inout) :: umask_dia(LBi:,LBj:)
150 real(r8),
intent(inout) :: vmask_dia(LBi:,LBj:)
152 real(r8),
intent(inout) :: pmask_full(LBi:,LBj:)
153 real(r8),
intent(inout) :: rmask_full(LBi:,LBj:)
154 real(r8),
intent(inout) :: umask_full(LBi:,LBj:)
155 real(r8),
intent(inout) :: vmask_full(LBi:,LBj:)
157 real(r8),
intent(in) :: pmask(LBi:UBi,LBj:UBj)
158 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
159 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
160 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
161# if defined AVERAGES || \
162 (defined ad_averages && defined adjoint) || \
163 (defined rp_averages && defined tl_ioms) || \
164 (defined tl_averages && defined tangent)
165 real(r8),
intent(inout) :: pmask_avg(LBi:UBi,LBj:UBj)
166 real(r8),
intent(inout) :: rmask_avg(LBi:UBi,LBj:UBj)
167 real(r8),
intent(inout) :: umask_avg(LBi:UBi,LBj:UBj)
168 real(r8),
intent(inout) :: vmask_avg(LBi:UBi,LBj:UBj)
171 real(r8),
intent(inout) :: pmask_dia(LBi:UBi,LBj:UBj)
172 real(r8),
intent(inout) :: rmask_dia(LBi:UBi,LBj:UBj)
173 real(r8),
intent(inout) :: umask_dia(LBi:UBi,LBj:UBj)
174 real(r8),
intent(inout) :: vmask_dia(LBi:UBi,LBj:UBj)
176 real(r8),
intent(inout) :: pmask_full(LBi:UBi,LBj:UBj)
177 real(r8),
intent(inout) :: rmask_full(LBi:UBi,LBj:UBj)
178 real(r8),
intent(inout) :: umask_full(LBi:UBi,LBj:UBj)
179 real(r8),
intent(inout) :: vmask_full(LBi:UBi,LBj:UBj)
186# include "set_bounds.h"
198 pmask_full(i,j)=pmask(i,j)
203 rmask_full(i,j)=rmask(i,j)
208 umask_full(i,j)=umask(i,j)
213 vmask_full(i,j)=vmask(i,j)
224 IF (((istrt.le.i).and.(i.le.iendt)).and. &
225 & ((jstrt.le.j).and.(j.le.jendt)))
THEN
226 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
227 umask_full(i,j)=1.0_r8
229 vmask_full(i,j)=1.0_r8
237 & lbi, ubi, lbj, ubj, &
240 & lbi, ubi, lbj, ubj, &
243 & lbi, ubi, lbj, ubj, &
246 & lbi, ubi, lbj, ubj, &
252 & lbi, ubi, lbj, ubj, &
255 & pmask_full, rmask_full, umask_full, vmask_full)
258# if defined AVERAGES || \
259 (defined ad_averages && defined adjoint) || \
260 (defined rp_averages && defined tl_ioms) || \
261 (defined tl_averages && defined tangent)
270 pmask_avg(i,j)=0.0_r8
272 pmask_avg(i,j)=pmask_full(i,j)
280 rmask_avg(i,j)=0.0_r8
282 rmask_avg(i,j)=rmask_full(i,j)
290 umask_avg(i,j)=0.0_r8
292 umask_avg(i,j)=umask_full(i,j)
300 vmask_avg(i,j)=0.0_r8
302 vmask_avg(i,j)=vmask_full(i,j)
309 & lbi, ubi, lbj, ubj, &
312 & lbi, ubi, lbj, ubj, &
315 & lbi, ubi, lbj, ubj, &
318 & lbi, ubi, lbj, ubj, &
324 & lbi, ubi, lbj, ubj, &
327 & pmask_avg, rmask_avg, umask_avg, vmask_avg)
340 pmask_dia(i,j)=0.0_r8
342 pmask_dia(i,j)=pmask_full(i,j)
350 rmask_dia(i,j)=0.0_r8
352 rmask_dia(i,j)=rmask_full(i,j)
360 umask_dia(i,j)=0.0_r8
362 umask_dia(i,j)=umask_full(i,j)
370 vmask_dia(i,j)=0.0_r8
372 vmask_dia(i,j)=vmask_full(i,j)
379 & lbi, ubi, lbj, ubj, &
382 & lbi, ubi, lbj, ubj, &
385 & lbi, ubi, lbj, ubj, &
388 & lbi, ubi, lbj, ubj, &
394 & lbi, ubi, lbj, ubj, &
397 & pmask_dia, rmask_dia, umask_dia, vmask_dia)
413 & LBi, UBi, LBj, UBj, &
414 & IminS, ImaxS, JminS, JmaxS, &
415 & pmask_avg, rmask_avg, &
416 & umask_avg, vmask_avg)
429 integer,
intent(in) :: ng, tile, model
430 integer,
intent(in) :: lbi, ubi, lbj, ubj
431 integer,
intent(in) :: imins, imaxs, jmins, jmaxs
434 real(r8),
intent(inout) :: pmask_avg(lbi:,lbj:)
435 real(r8),
intent(inout) :: rmask_avg(lbi:,lbj:)
436 real(r8),
intent(inout) :: umask_avg(lbi:,lbj:)
437 real(r8),
intent(inout) :: vmask_avg(lbi:,lbj:)
439 real(r8),
intent(inout) :: pmask_avg(lbi:ubi,lbj:ubj)
440 real(r8),
intent(inout) :: rmask_avg(lbi:ubi,lbj:ubj)
441 real(r8),
intent(inout) :: umask_avg(lbi:ubi,lbj:ubj)
442 real(r8),
intent(inout) :: vmask_avg(lbi:ubi,lbj:ubj)
450# include "set_bounds.h"
456 IF (
navg(ng).eq.0)
RETURN
467 & (mod(
iic(ng)-1,
navg(ng)).eq.0).and. &
472 pmask_avg(i,j)=min(1.0_r8, pmask_avg(i,j))
477 rmask_avg(i,j)=min(1.0_r8, rmask_avg(i,j))
482 umask_avg(i,j)=min(1.0_r8, umask_avg(i,j))
487 vmask_avg(i,j)=min(1.0_r8, vmask_avg(i,j))
493 & lbi, ubi, lbj, ubj, &
496 & lbi, ubi, lbj, ubj, &
499 & lbi, ubi, lbj, ubj, &
502 & lbi, ubi, lbj, ubj, &
508 & lbi, ubi, lbj, ubj, &
511 & pmask_avg, rmask_avg, umask_avg, vmask_avg)
subroutine set_masks_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, pmask, rmask, umask, vmask, pmask_avg, rmask_avg, umask_avg, vmask_avg, pmask_dia, rmask_dia, umask_dia, vmask_dia, pmask_full, rmask_full, umask_full, vmask_full)