1 SUBROUTINE da_apply_rf_1v_adj( be, vp, grid, nv )
5 TYPE (be_type), INTENT(IN) :: be ! Background error structure.
6 type (domain) , intent(inout) :: grid ! Dimensions and xpose buffers.
8 integer, intent(in) :: nv ! # of var.
10 real, dimension(ims:ime, jms:jme, kms:kme), INTENT(INOUT) :: vp ! working array
12 integer :: in, jn, kn, k
14 !-------------------------------------------------------------------------
15 ! [1.0] Perform 1D recursive filter in x-y direction:
16 !-------------------------------------------------------------------------
19 grid%xp % v1z(its:ite,jts:jte,k) = vp(its:ite,jts:jte,k)
22 call da_transpose_z2y ( grid )
24 in=grid%xp%ipey-grid%xp%ipsy
25 jn=grid%xp%jpey-grid%xp%jpsy
29 do k=grid%xp%kpsy,grid%xp%kpey
31 grid%xp % v1y(grid%xp%ipsy:grid%xp%ipey,grid%xp%jpsy:grid%xp%jpey,k),&
32 be%sljy(grid%xp%ipsy:grid%xp%ipey,grid%xp%jpsy:grid%xp%jpey,k,nv), &
33 be%ndeg,be%be,be%nta,be%swidth,be%table)
37 call da_transpose_y2x ( grid )
39 in=grid%xp%ipex-grid%xp%ipsx
40 jn=grid%xp%jpex-grid%xp%jpsx
44 do k=grid%xp%kpsx,grid%xp%kpex
46 grid%xp % v1x(grid%xp%ipsx:grid%xp%ipex,grid%xp%jpsx:grid%xp%jpex,k),&
47 be%slix(grid%xp%ipsx:grid%xp%ipex,grid%xp%jpsx:grid%xp%jpex,k,nv), &
48 be%ndeg,be%be,be%nta,be%swidth,be%table)
52 call da_transpose_x2z ( grid )
55 vp(its:ite,jts:jte,k)= grid%xp % v1z(its:ite,jts:jte,k)
58 !-------------------------------------------------------------------------
59 ! [2.0]: Perform 1D recursive filter in z direction:
60 !-------------------------------------------------------------------------
66 call da_rfz(vp(ims:ime,jms:jme,kms:kme),in,jn,kn,be%ndeg,&
67 be%vz(kts:kte,its:ite,jts:jte,nv),be%be,be%table,be%nta,be%swidth,&
68 ids,ide, jds,jde, kds,kde, &
69 ims,ime, jms,jme, kms,kme, &
70 its,ite, jts,jte, kts,kte )
71 END SUBROUTINE da_apply_rf_1v_adj