updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_vtox_transforms / da_transform_vpatox.inc
blob3b36d208c9fe97a74aa896d207fcf37984438259
1 subroutine da_transform_vpatox(grid, nens, ep, vp, nobwin)
3    !----------------------------------------------------------------------
4    ! Purpose:  Does transform of alpha control variable (vp%alpha) to x
5    !----------------------------------------------------------------------
7    implicit none
9    type(ep_type),              intent(in)    :: ep     ! Ensemble perturbation structure.
10    type(vp_type),              intent(inout) :: vp     ! Grdipt/level CV.
11    type(domain),               intent(inout) :: grid
12    integer, intent(in)                       :: nens   ! number of ensembles
13    integer, intent(in), optional             :: nobwin
15    integer :: iobwin
17    if (nens <= 0 .or. alphacv_method /= alphacv_method_xa) return
19    if (trace_use) call da_trace_entry("da_transform_vpatox")
21    iobwin = 1
22    if ( present(nobwin) ) then
23       iobwin = nobwin
24    end if
26    if (nens > 0 .and. alphacv_method == alphacv_method_xa) then
27       !transform xa_ens from vp%alpha
28       !xa_ens holds the increment from ensemble perturbations for certain fgat time
29       grid%xa_ens%u = 0.0
30       grid%xa_ens%v = 0.0
31       grid%xa_ens%t = 0.0
32       grid%xa_ens%q = 0.0
33       grid%xa_ens%psfc = 0.0
34       grid%xa_ens%qcw = 0.0
35       grid%xa_ens%qrn = 0.0
36       grid%xa_ens%qci = 0.0
37       grid%xa_ens%qsn = 0.0
38       grid%xa_ens%qgr = 0.0
39       if ( anal_type_hybrid_dual_res ) then
40          call da_calc_flow_dependence_xa_dual_res(grid, grid%xa_ens, nens, ep, vp, iobwin)
41       else
42          call da_calc_flow_dependence_xa(grid%xa_ens, nens, ep, vp, iobwin)
43       end if
44    end if
46    if (trace_use) call da_trace_exit("da_transform_vpatox")
48 end subroutine da_transform_vpatox