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