da_get_spoles.inc
References to this file elsewhere.
1 subroutine da_get_spoles(x, &
2 ids, ide, jds, jde, &
3 ims, ime, jms, jme, kms, kme, &
4 its, ite, jts, jte, kts, kte )
5
6 !---------------------------------------------------------------------------
7 ! Purpose: Treatment for Scalar field at Poles
8 !---------------------------------------------------------------------------
9
10 implicit none
11
12
13 integer, intent(in) :: ids, ide, jds, jde
14 integer, intent(in) :: ims, ime, jms, jme, kms, kme
15 integer, intent(in) :: its, ite, jts, jte, kts, kte
16 real, intent(inout) :: x(ims:ime,jms:jme,kms:kme)
17
18 integer :: k
19 real :: tmpvar,tmps,tmp_s
20
21 if (trace_use) call da_trace_entry("da_get_spoles")
22
23 tmpvar = 1.0/real(ide-ids+1)
24
25 do k = kts, kte
26 tmps =0.0 ; tmp_s =0.0
27 if (jts == jds) tmp_s = tmpvar*sum(x(its:ite,jts+1,k))
28
29 tmps = wrf_dm_sum_real( tmp_s)
30 if (jts == jds) x(its:ite,jts,k) = tmps
31
32 tmps =0.0 ; tmp_s =0.0
33 if (jte == jde) tmp_s = tmpvar*sum(x(its:ite,jte-1,k))
34
35 tmps = wrf_dm_sum_real( tmp_s)
36 if (jte == jde) x(its:ite,jte,k) = tmps
37 end do
38
39 if (trace_use) call da_trace_exit("da_get_spoles")
40
41 end subroutine da_get_spoles
42
43