47 USE yomhook
,ONLY : lhook, dr_hook
48 USE parkind1
,ONLY : jprb
55 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pzs
56 REAL,
DIMENSION(:,:),
INTENT(IN) :: pmask
57 INTEGER,
INTENT(IN) :: kzsfilter
62 REAL,
DIMENSION(0:SIZE(PZS,1)+1,0:SIZE(PZS,2)+1) :: zzs
64 REAL,
DIMENSION(0:SIZE(PZS,1)+1,0:SIZE(PZS,2)+1) :: zmask
66 INTEGER :: ji,jj,jiter,iiu,iju
68 REAL(KIND=JPRB) :: zhook_handle
74 IF (lhook) CALL dr_hook(
'ZSFILTER',0,zhook_handle)
79 zzs(1:iiu,1:iju)=pzs(:,:)
80 zzs(0,:) =2.*zzs(1,:) -zzs(2,:)
81 zzs(iiu+1,:)=2.*zzs(iiu,:)-zzs(iiu-1,:)
82 zzs(:,0) =2.*zzs(:,1) -zzs(:,2)
83 zzs(:,iju+1)=2.*zzs(:,iju)-zzs(:,iju-1)
85 zmask(1:iiu,1:iju)=pmask(:,:)
93 pzs(ji,jj)= zzs(ji,jj) &
94 + zk*0.125* zmask(ji,jj) &
95 * ( zmask(ji-1,jj) * zzs(ji-1,jj) &
96 + zmask(ji+1,jj) * zzs(ji+1,jj) &
97 + zmask(ji,jj-1) * zzs(ji,jj-1) &
98 + zmask(ji,jj+1) * zzs(ji,jj+1) &
102 +zmask(ji,jj+1) ) * zzs(ji,jj) )
105 zzs(1:iiu,1:iju)=pzs(:,:)
107 IF (lhook) CALL dr_hook(
'ZSFILTER',1,zhook_handle)
subroutine zsfilter(PZS, PMASK, KZSFILTER)