subroutine da_transform_xtozrhoq(xb, i, j, zh, zf, zrhom),2
!-----------------------------------------------------------------------
! Purpose: TBD
!-----------------------------------------------------------------------
implicit none
integer, intent(in) :: i, j
type (xb_type), intent(in) :: xb ! first guess state.
real, intent(out) :: zrhom ! gridded height weighted moisture
real, intent(in) :: zh(mkz)
real, intent(in) :: zf(mkz+1)
integer :: k
if (trace_use) call da_trace_entry
("da_transform_xtozrhoq")
zrhom = 0.0
do k = 1,mkz
zrhom = (zf(k)-zf(k+1))*zh(k)*(xb%q(i,j,k)*xb%rho(i,j,k))+zrhom
end do
if (trace_use) call da_trace_exit
("da_transform_xtozrhoq")
end subroutine da_transform_xtozrhoq