!
! !MODULE: Nst_Var_ESMFMod  ---                Definition of the Nst_Var model
!                                           fields in the ESMF internal state.
!
! !DESCRIPTION: Nst_Var_ESMFMod ---            Define the Nst_Var model  variables
!                                            in the ESMF internal state.
!---------------------------------------------------------------------------
! !REVISION HISTORY:
!
!  May 2008      Shrinivas Moorthi Initial code.
!  Aug 2009      Xu Li for DTM-1p
!  Mar 2014      Fanglin Yang   removed pointers for fixing digital filter
!  Apr 2014      Xu Li   introduce to and modified for GSI (from GSM)
!
! !INTERFACE:
!
 MODULE Nst_Var_ESMFMod

 use kinds, only: i_kind,r_kind

 IMPLICIT none

 TYPE Nst_Var_Data
    real(r_kind),allocatable:: slmsk    (:,:)
    real(r_kind),allocatable:: xt       (:,:)
    real(r_kind),allocatable:: xs       (:,:)
    real(r_kind),allocatable:: xu       (:,:)
    real(r_kind),allocatable:: xv       (:,:)
    real(r_kind),allocatable:: xz       (:,:)
    real(r_kind),allocatable:: zm       (:,:)
    real(r_kind),allocatable:: xtts     (:,:)
    real(r_kind),allocatable:: xzts     (:,:)
    real(r_kind),allocatable:: dt_cool  (:,:)
    real(r_kind),allocatable:: z_c      (:,:)
    real(r_kind),allocatable:: c_0      (:,:)
    real(r_kind),allocatable:: c_d      (:,:)
    real(r_kind),allocatable:: w_0      (:,:)
    real(r_kind),allocatable:: w_d      (:,:)
    real(r_kind),allocatable:: d_conv   (:,:)
    real(r_kind),allocatable:: ifd      (:,:)
    real(r_kind),allocatable:: tref     (:,:)
    real(r_kind),allocatable:: Qrain    (:,:)
 end type Nst_Var_Data
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   contains
   subroutine nstvar_aldata(dim1,dim2,data,iret)
      implicit none
      integer(i_kind), intent(in)       :: dim1, dim2
      type(nst_var_data),intent(inout)  :: data
      integer(i_kind), intent(out)      :: iret
!
allocate(                         &
      data%slmsk   (dim1,dim2),   &
      data%xt      (dim1,dim2),   &
      data%xs      (dim1,dim2),   &
      data%xu      (dim1,dim2),   &
      data%xv      (dim1,dim2),   &
      data%xz      (dim1,dim2),   &
      data%zm      (dim1,dim2),   &
      data%xtts    (dim1,dim2),   &
      data%xzts    (dim1,dim2),   &
      data%dt_cool (dim1,dim2),   &
      data%z_c     (dim1,dim2),   &
      data%c_0     (dim1,dim2),   &
      data%c_d     (dim1,dim2),   &
      data%w_0     (dim1,dim2),   &
      data%w_d     (dim1,dim2),   &
      data%d_conv  (dim1,dim2),   &
      data%ifd     (dim1,dim2),   &
      data%tref    (dim1,dim2),   &
      data%Qrain   (dim1,dim2),   &
      stat=iret)
    if(iret.ne.0) iret=-3
    return
  end subroutine nstvar_aldata

 END MODULE Nst_Var_ESMFMod