Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_vtox_transforms / da_transform_vchemtox.inc
blob02634e4a9522ad662766404d538f6c5fdca05978
1 subroutine da_transform_vchemtox(grid, vchem, be)
3    !-----------------------------------------------------------------------
4    ! Purpose: Transform chemical CV to model space
5    !-----------------------------------------------------------------------
7    implicit none
9    type(domain),  intent(inout) :: grid
10    type(xchem_type), intent(in) :: vchem   ! Grid point/EOF equivalent.
11    type(be_type), intent(in)    :: be   ! Background error structure.
13    integer :: ij, ic, i, j, m, n  ! Loop counters
14    integer :: mz
15    real :: temp
17    if (trace_use) call da_trace_entry("da_transform_vchemtox")
19    !$OMP PARALLEL DO &
20    !$OMP PRIVATE ( ij, ic, m, n, j, i, temp )
22          grid%xachem%chem_ic = 0.D0
24    do ij = 1 , grid%num_tiles
25       do ic = PARAM_FIRST_SCALAR, num_chem
26          do m = kts, kte    !LEVELS
27             do n = 1, be % v12(ic-1) % mz !EIGENMODES
28                do j = grid%j_start(ij), grid%j_end(ij)
29 !               do j = jts, jte
30                   temp = be % v12(ic-1) % evec (j,m,n) * be % v12(ic-1) % val (j,n)
31                   do i = its, ite
32                       grid%xachem%chem_ic (i,j,m,ic) = grid%xachem%chem_ic (i,j,m,ic) + &
33                                                        temp * vchem%chem_ic (i,j,n,ic)
34                   end do
35                end do
36             end do
37          end do
38       end do
39    end do
40    !$OMP END PARALLEL DO
42 #ifdef DM_PARALLEL
43 #include "HALO_CHEM_XA.inc"     
44 #endif
46    if (trace_use) call da_trace_exit("da_transform_vchemtox")
48 end subroutine da_transform_vchemtox