da_transform_vtovv_global.inc

References to this file elsewhere.
1 subroutine da_transform_vtovv_global (cv_size, xbx, be, cv, vv)
2 
3    !--------------------------------------------------------------------------
4    ! Purpose: Control variable transform for global WRF-Var 
5    !--------------------------------------------------------------------------
6 
7    implicit none
8 
9    integer, intent(in)          :: cv_size ! Size of cv array.
10    type (xbx_type),intent(in)   :: xbx  ! For header & non-grid arrays.
11    type (be_type), intent(in)   :: be   ! background errors.
12    real, intent(in)             :: cv(1:cv_size)   ! control variables.
13    type (vp_type),intent(inout) :: vv   ! grdipt/eof cv (local).
14 
15    integer                      :: k, m ! Loop counters.
16    integer                      :: cv_s ! Counter.
17    integer                      :: cv_e ! Counter.
18 
19    if (trace_use) call da_trace_entry("da_transform_vtovv_global")
20 
21    !-------------------------------------------------------------------------
22    ! [1] Spectral to grid transform for standard control variables:
23    !-------------------------------------------------------------------------
24   
25    cv_s = 1        
26    do k = 1, be%v1%mz
27       cv_e = cv_s + 2 * be % cv % size1c - 1 
28       call da_vtovv_spectral(be % v1 % max_wave, be % cv % size1c, &
29          xbx % lenr, xbx % lenwrk, xbx % lensav, &
30          xbx % inc, xbx % alp_size, xbx % alp, &
31          xbx % wsave, be%v1%power(0:be % v1 % max_wave,k), &
32          cv(cv_s:cv_e), vv%v1(its:ite,jts:jte,k))
33       cv_s = cv_e + 1
34    end do
35 
36    do k = 1, be%v2%mz
37       cv_e = cv_s + 2 * be % cv % size2c - 1
38       call da_vtovv_spectral(be % v2 % max_wave, be % cv % size2c, &
39          xbx % lenr, xbx % lenwrk, xbx % lensav, &
40          xbx % inc, xbx % alp_size, xbx % alp, &
41          xbx % wsave, be%v2%power(0:be % v2 % max_wave,k), &
42          cv(cv_s:cv_e), vv%v2(its:ite,jts:jte,k))
43       cv_s = cv_e + 1
44    end do
45 
46    do k = 1, be%v3%mz
47       cv_e = cv_s + 2 * be % cv % size3c - 1
48       call da_vtovv_spectral(be % v3 % max_wave, be % cv % size3c, &
49          xbx % lenr, xbx % lenwrk, xbx % lensav, &
50          xbx % inc, xbx % alp_size, xbx % alp, &
51          xbx % wsave, be%v3%power(0:be % v3 % max_wave,k), &
52          cv(cv_s:cv_e), vv%v3(its:ite,jts:jte,k))
53       cv_s = cv_e + 1
54    end do
55 
56    do k = 1, be%v4%mz
57       cv_e = cv_s + 2 * be % cv % size4c - 1
58       call da_vtovv_spectral(be % v4 % max_wave, be % cv % size4c, &
59          xbx % lenr, xbx % lenwrk, xbx % lensav, &
60          xbx % inc, xbx % alp_size, xbx % alp, &
61          xbx % wsave, be%v4%power(0:be % v4 % max_wave,k), &
62          cv(cv_s:cv_e), vv%v4(its:ite,jts:jte,k))
63       cv_s = cv_e + 1
64    end do
65 
66    do k = 1, be%v5%mz
67 
68      cv_e = cv_s + 2 * be % cv % size5c - 1
69      call da_vtovv_spectral(be % v5 % max_wave, be % cv % size5c, &
70         xbx % lenr, xbx % lenwrk, xbx % lensav, &
71         xbx % inc, xbx % alp_size, xbx % alp, &
72         xbx % wsave, be%v5%power(0:be % v5 % max_wave,k), &
73         cv(cv_s:cv_e), vv%v5(its:ite,jts:jte,kts:kte))
74      cv_s = cv_e + 1
75    end do
76 
77    !-------------------------------------------------------------------------
78    ! [2] Spectral to grid transform for flow-dependent control variables:
79    !-------------------------------------------------------------------------
80   
81    do m = 1, be % ne
82       cv_e = cv_s + 2 * be % cv % size_alphac - 1
83       call da_vtovv_spectral(be % alpha % max_wave, be % cv % size_alphac, &
84          xbx % lenr, xbx % lenwrk, xbx % lensav, &
85          xbx % inc, xbx % alp_size, xbx % alp, &
86          xbx % wsave, be % alpha % power(0:be%alpha%max_wave,1), &
87          cv(cv_s:cv_e), vv%alpha(its:ite,jts:jte,m))
88       cv_s = cv_e + 1
89    end do
90 
91    if (trace_use) call da_trace_exit("da_transform_vtovv_global")
92 
93 end subroutine da_transform_vtovv_global
94 
95