!
!##################################################################
!##################################################################
!######                                                      ######
!######             SUBROUTINE define_wrf_static             ######
!######                                                      ######
!######                     Developed by                     ######
!######     Center for Analysis and Prediction of Storms     ######
!######                University of Oklahoma                ######
!######                                                      ######
!##################################################################
!##################################################################
!


SUBROUTINE define_wrf_static(ncid,nx,ny,land_cat,soil_cat,istatus),25

!-----------------------------------------------------------------------
!
! PURPOSE:
!
!   Define NetCDF variables for WRF static file.
!
! NOTE:
!   This subroutine only defines the variables to be written in NetCDF
!   define mode. Please make sure to write the actual data in wrfstatic.f90.
!   because it set NF_SET_FILL to NF_NOFILL.
!
!-----------------------------------------------------------------------

  USE wrf_metadata

  IMPLICIT NONE
  
  INTEGER, INTENT(IN)  :: ncid
  INTEGER, INTENT(IN)  :: nx
  INTEGER, INTENT(IN)  :: ny
  INTEGER, INTENT(IN)  :: land_cat
  INTEGER, INTENT(IN)  :: soil_cat
  INTEGER, INTENT(OUT) :: istatus

!-----------------------------------------------------------------------
!
!  Misc. local variables
!
!-----------------------------------------------------------------------

  INTEGER  :: dimunlim_id
  INTEGER  :: dimx_id, dimxs_id
  INTEGER  :: dimy_id, dimys_id
  INTEGER  :: dimm_id
  INTEGER  :: dimstr_id
  INTEGER  :: dimsoil_id, dimland_id

  INTEGER  :: dimlenx, dimleny
  INTEGER  :: dimlenm, dimlenstr
  INTEGER  :: dimlensoil, dimlenland

  INTEGER  :: varid, oldfillmode

  TYPE(wrf_var_metadata) :: var_meta

  CHARACTER(LEN=9)            :: varname

!
!-----------------------------------------------------------------------
!
!  Include files
!
!-----------------------------------------------------------------------

  INCLUDE 'netcdf.inc'

!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
!  Beginning of executable code below ......
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

!-----------------------------------------------------------------------
!
! get dimension ids and dimension length
!
!-----------------------------------------------------------------------

  istatus = NF_INQ_DIMID(ncid,'Time',dimunlim_id)

  istatus = NF_INQ_DIMID(ncid,'DateStrLen',dimstr_id)
  istatus = NF_INQ_DIMLEN(ncid,dimstr_id,dimlenstr)

  istatus = NF_INQ_DIMID(ncid,'west_east_stag',dimx_id)
  istatus = NF_INQ_DIMID(ncid,'west_east',     dimxs_id)

  istatus = NF_INQ_DIMLEN(ncid,dimx_id,dimlenx)
  IF(dimlenx /= nx) THEN
    WRITE(6,*) 'Mismatched dimension size in X direction.'
    STOP
  END IF

  istatus = NF_INQ_DIMID(ncid,'south_north_stag',dimy_id)
  istatus = NF_INQ_DIMID(ncid,'south_north',     dimys_id)

  istatus = NF_INQ_DIMLEN(ncid,dimy_id,dimleny)
  IF(dimleny /= ny) THEN
    WRITE(6,*) 'Mismatched dimension size in Y direction.'
    STOP
  END IF

  istatus = NF_INQ_DIMID(ncid,'land_cat',dimland_id)
  istatus = NF_INQ_DIMLEN(ncid,dimland_id,dimlenland)

  istatus = NF_INQ_DIMID(ncid,'soil_cat',dimsoil_id)
  istatus = NF_INQ_DIMLEN(ncid,dimsoil_id,dimlensoil)

  istatus = NF_INQ_DIMID(ncid,'month',dimm_id)
  istatus = NF_INQ_DIMLEN(ncid,dimm_id,dimlenm)

  ! do not fill, will set values explicitly later. Improve performance

  istatus = NF_SET_FILL(ncid,NF_NOFILL,oldfillmode)

!-----------------------------------------------------------------------
!
!   Defines Times string
!
!-----------------------------------------------------------------------

  istatus = NF_DEF_VAR(ncid,'Times',NF_CHAR,2,                     &
                         (/dimstr_id, dimunlim_id/),varid)

!-----------------------------------------------------------------------
!
!  WRF latitude and longitude
!
!-----------------------------------------------------------------------

  var_meta%name        = 'XLAT'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Latitude of each gridpoint of the mass grid'
  var_meta%units       = 'degree_north'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                       (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)

  var_meta%name        = 'XLONG'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Longitude of each gridpoint of the mass grid'
  var_meta%units       = 'degree_east'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                          (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)

!-------------------------------------------------------------------
!
!  Surface characteristics
!
!------------------------------------------------------------------

  var_meta%name        = 'LANDMASK'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Flag values indicating water(0) or land (1) points'
  var_meta%units       = 'flag: 1=land pt'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'HGT'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Topographic height on the mass grid points'
  var_meta%units       = 'm'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'TOPOSTDV'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Sub-gridscale standard deviation of topography'
  var_meta%units       = 'm m-1'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'TOPOSLPX'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Sub-gridscale mean topographic slope in x-direction'
  var_meta%units       = 'm m-1'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'TOPOSLPY'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Sub-gridscale mean topographic slope in y-direction'
  var_meta%units       = 'm m-1'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Map projection related variables
!
!-----------------------------------------------------------------------

  var_meta%name        = 'COSALPHA'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Cosine of angle between mass point longitudes and std longitude'
  var_meta%units       = ' '
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'SINALPHA'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Sin of angle between mass point longitudes and std longitude'
  var_meta%units       = ' '
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'F'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Horizontal component of the coriolis acceleration'
  var_meta%units       = 's-1'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'E'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Vertical component of the coriolis acceleration'
  var_meta%units       = 's-1'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'MAPFAC_M'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Map scale factor on mass grid'
  var_meta%units       = ' '
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'MAPFAC_U'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Map scale factor on u grid'
  var_meta%units       = ' '
  var_meta%stagger     = 'X'

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimx_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'MAPFAC_V'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Map scale factor on v grid'
  var_meta%units       = ' '
  var_meta%stagger     = 'Y'

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimy_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Greenness fraction
!
!-----------------------------------------------------------------------

  var_meta%name        = 'SHDMAX'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Maximum annual greenness fraction'
  var_meta%units       = 'Percentage'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'SHDMIN'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Minimum annual greenness fraction'
  var_meta%units       = 'Percentage'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Snow albedo
!
!-----------------------------------------------------------------------

  var_meta%name        = 'SNOALB'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Maximum albedo over snow'
  var_meta%units       = 'Fraction'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Average annual temperature
!
!-----------------------------------------------------------------------

  var_meta%name        = 'TMN'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Average annual temperature'
  var_meta%units       = 'K'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Topographical categorical slope
!
!-----------------------------------------------------------------------

  var_meta%name        = 'SLOPECAT'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XY '
  var_meta%description = 'Topographical categorical slope'
  var_meta%units       = 'Category 0-9'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,3,             &
                           (/dimxs_id,dimys_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Land use
!
!-----------------------------------------------------------------------

  var_meta%name        = 'LANDUSEF'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XYZ'
  var_meta%description = 'Land use categorical fraction on mass grid'
  var_meta%units       = 'Fraction'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,4,             &
                     (/dimxs_id,dimys_id,dimland_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Soil type
!
!-----------------------------------------------------------------------

  var_meta%name        = 'SOILCTOP'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XYZ'
  var_meta%description = 'Top layer soil type as a categorical fraction'
  var_meta%units       = 'Fraction'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,4,             &
                     (/dimxs_id,dimys_id,dimsoil_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
  var_meta%name        = 'SOILCBOT'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XYZ'
  var_meta%description = 'Bottom layer soil type as a categorical fraction'
  var_meta%units       = 'Fraction'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,4,             &
                     (/dimxs_id,dimys_id,dimsoil_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
!  Greenness fraction
!
!-----------------------------------------------------------------------

  var_meta%name        = 'GREEN12M'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XYZ'
  var_meta%description = 'Monthly climatological greenness fraction'
  var_meta%units       = 'Fraction'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,4,             &
                     (/dimxs_id,dimys_id,dimm_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)

!-----------------------------------------------------------------------
!
! Albedo
!
!-----------------------------------------------------------------------

  var_meta%name        = 'ALBDO12M'
  var_meta%fieldType   = WRF_REAL
  var_meta%memoryOrder = 'XYZ'
  var_meta%description = 'Monthly climatological albedo'
  var_meta%units       = 'Fraction'
  var_meta%stagger     = ' '

  istatus = NF_DEF_VAR(ncid,TRIM(var_meta%name),NF_FLOAT,4,             &
                     (/dimxs_id,dimys_id,dimm_id,dimunlim_id/),varid)
  CALL write_var_meta(ncid,varid,var_meta)
 
!-----------------------------------------------------------------------
!
! Before return
!
!-----------------------------------------------------------------------

  istatus = NF_ENDDEF(ncid)

  RETURN
END SUBROUTINE define_wrf_static
!
!##################################################################
!##################################################################
!######                                                      ######
!######             SUBROUTINE write_wrf_static              ######
!######                                                      ######
!######                     Developed by                     ######
!######     Center for Analysis and Prediction of Storms     ######
!######                University of Oklahoma                ######
!######                                                      ######
!##################################################################
!##################################################################
!

SUBROUTINE write_wrf_static(FileHandler,io_form,DateStr,                &,25
                     nx,ny,land_cat,soil_cat,                           &
                     lat,lon,f,e,msft,msfu,msfv,cosalpha,sinalpha,      &
                     hgt,topostdv,toposlpx,toposlpy,landmask,landusef,  &
                     soilctop,soilcbot,tmn,slopecat,snoalb,             &
                     shdmax,shdmin,green12m,albdo12m, istatus)

!-----------------------------------------------------------------------
!
! PURPOSE:
!   Write static arrays
!
!-----------------------------------------------------------------------

  USE wrf_metadata

  IMPLICIT NONE

  INTEGER, INTENT(IN)  :: FileHandler
  INTEGER, INTENT(IN)  :: io_form
  CHARACTER(LEN=19), INTENT(IN) :: DateStr
  INTEGER, INTENT(IN)  :: nx,ny
  INTEGER, INTENT(IN)  :: land_cat, soil_cat
  REAL,    INTENT(IN)  :: lat(nx,ny), lon(nx,ny)
  REAL,    INTENT(IN)  :: msft(nx,ny), msfu(nx,ny),msfv(nx,ny)
  REAL,    INTENT(IN)  :: f(nx,ny),e(nx,ny)
  REAL,    INTENT(IN)  :: cosalpha(nx,ny),sinalpha(nx,ny)
  REAL,    INTENT(IN)  :: hgt(nx,ny),topostdv(nx,ny)
  REAL,    INTENT(IN)  :: toposlpx(nx,ny),toposlpy(nx,ny)
  REAL,    INTENT(IN)  :: landmask(nx,ny),landusef(nx,ny,land_cat)
  REAL,    INTENT(IN)  :: soilctop(nx,ny,soil_cat),soilcbot(nx,ny,soil_cat)
  REAL,    INTENT(IN)  :: tmn(nx,ny)
  REAL,    INTENT(IN)  :: slopecat(nx,ny)
  REAL,    INTENT(IN)  :: snoalb(nx,ny)
  REAL,    INTENT(IN)  :: shdmax(nx,ny)
  REAL,    INTENT(IN)  :: shdmin(nx,ny)
  REAL,    INTENT(IN)  :: green12m(nx,ny,12)
  REAL,    INTENT(IN)  :: albdo12m(nx,ny,12)
  
  INTEGER, INTENT(OUT) :: istatus

!-----------------------------------------------------------------------
!
! Misc. local variables
!
!-----------------------------------------------------------------------

  INTEGER, PARAMETER      :: fzone_wrf = 1
  TYPE(wrf_var_metadata)  :: var_meta

  INTEGER           :: nxlg, nylg
  REAL, ALLOCATABLE :: temlg(:,:,:)

!f@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! Begin of executable code ...
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  nxlg = nx
  nylg = ny

  ALLOCATE(temlg(nxlg,nylg,MAX(land_cat,soil_cat)), STAT = istatus)


  var_meta%name        = 'XLAT'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Latitude of each gridpoint of the mass grid'
  var_meta%units       = 'deg north'
  var_meta%stagger     = ' '
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north'
  var_meta%dimName3    = ' '

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               lat,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)


  var_meta%name        = 'XLONG'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Longitude of each gridpoint of the mass grid'
  var_meta%units       = 'deg east'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               lon,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'LANDMASK'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Flag valuses indicationg water(0) or land(1) points'
  var_meta%units       = 'flag: 1=land pt'
  var_meta%stagger     = ' '
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north'
  var_meta%dimName3    = ' '

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               landmask,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'HGT'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Topographic height on the mass grid points'
  var_meta%units       = 'm'
  var_meta%stagger     = ' '
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north'
  var_meta%dimName3    = ' '

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               hgt,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'TOPOSTDV'
  var_meta%description = 'Sub-gridscale standard deviation of topography'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               topostdv,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'TOPOSLPX'
  var_meta%description = 'Sub-gridscale mean topographic slope in x-direction'
  var_meta%units       = 'm m-1'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               toposlpx,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'TOPOSLPY'
  var_meta%description = 'Sub-gridscale mean topographic slope in y-direction'
  var_meta%units       = 'm m-1'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               toposlpy,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'COSALPHA'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Cosine of angle between mass point longitudes and std lon'
  var_meta%units       = 'Dimensionless'
  var_meta%stagger     = ' '
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north'
  var_meta%dimName3    = ' '

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               cosalpha,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'SINALPHA'
  var_meta%description = 'Sin of angle between mass point longitude and std longitude'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               sinalpha,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'F'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Horizontal component of the coriolis acceleartion'
  var_meta%units       = 's-1'
  var_meta%stagger     = ' '
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north'
  var_meta%dimName3    = ' '

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               f,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'E'
  var_meta%description = 'Vertical component of the coriolis acceleartion'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               e,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'MAPFAC_M'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Map scale factor on mass grid'
  var_meta%units       = 'Dimensionless'
  var_meta%stagger     = ' '
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north'
  var_meta%dimName3    = ' '

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               msft,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'MAPFAC_U'
  var_meta%description = 'Map scale factor on u grid'
  var_meta%dimName1    = 'west_east_stag'
  var_meta%stagger     = 'X'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               msfu,nx,ny,fzone_wrf,temlg,nxlg,nylg-1)

  var_meta%name        = 'MAPFAC_V'
  var_meta%description = 'Map scale factor on v grid'
  var_meta%stagger     = 'Y'
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north_stag'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               msfv,nx,ny,fzone_wrf,temlg,nxlg-1,nylg)

  var_meta%name        = 'SHDMAX'
  var_meta%fieldType   = WRF_REAL
  var_meta%MemoryOrder = 'XY '
  var_meta%description = 'Maximum annual greenness fraction'
  var_meta%units       = 'Percentage'
  var_meta%stagger     = ' '
  var_meta%dimName1    = 'west_east'
  var_meta%dimName2    = 'south_north'
  var_meta%dimName3    = ' '

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               shdmax,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'SHDMIN'
  var_meta%description = 'Minimun annual greenness fraction'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               shdmin,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'SNOALB'
  var_meta%units       = 'Fraction'
  var_meta%description = 'Maximum albedo over snow'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               snoalb,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'TMN'
  var_meta%units       = 'K'
  var_meta%description = 'Average annual temperature'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               tmn,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'SLOPECAT'
  var_meta%units       = 'Category 0-9'
  var_meta%description = 'Topographical categorical slope'

  CALL write2d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               slopecat,nx,ny,fzone_wrf,temlg,nxlg-1,nylg-1)

  var_meta%name        = 'LANDUSEF'
  var_meta%MemoryOrder = 'XYZ'
  var_meta%units       = 'Fraction'
  var_meta%description = 'Land use categorical fraction on mass grid'
  var_meta%dimName3    = 'land_cat '
  var_meta%stagger     = 'Z'  ! actually no stagger

  CALL write3d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               landusef,nx,ny,land_cat,fzone_wrf,                       &
               temlg,temlg,nxlg-1,nylg-1,land_cat)

  var_meta%name        = 'SOILCTOP'
  var_meta%MemoryOrder = 'XYZ'
  var_meta%units       = 'Fraction'
  var_meta%description = 'Top layer soil type as a categorical fraction'
  var_meta%dimName3    = 'soil_cat '
  var_meta%stagger     = 'Z'  ! actually no stagger

  CALL write3d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               soilctop,nx,ny,soil_cat,fzone_wrf,                       &
               temlg,temlg,nxlg-1,nylg-1,soil_cat)

  var_meta%name        = 'SOILCBOT'
  var_meta%MemoryOrder = 'XYZ'
  var_meta%units       = 'Percentage'
  var_meta%description = 'Bottom layer soil type as a categorical fraction'
  var_meta%dimName3    = 'soil_cat '
  var_meta%stagger     = 'Z'  ! actually no stagger

  CALL write3d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               soilcbot,nx,ny,soil_cat,fzone_wrf,                       &
               temlg,temlg,nxlg-1,nylg-1,soil_cat)

  var_meta%name        = 'GREEN12M'
  var_meta%MemoryOrder = 'XYZ'
  var_meta%units       = 'Fraction'
  var_meta%description = 'Monthly climatological greenness fraction'
  var_meta%dimName3    = 'month '
  var_meta%stagger     = 'Z'  ! actually no stagger

  CALL write3d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               green12m,nx,ny,12,fzone_wrf,                             &
               temlg,temlg,nxlg-1,nylg-1,12)

  var_meta%name        = 'ALBDO12M'
  var_meta%MemoryOrder = 'XYZ'
  var_meta%units       = 'Fraction'
  var_meta%description = 'Monthly climatological albedo'
  var_meta%dimName3    = 'month '
  var_meta%stagger     = 'Z'  ! actually no stagger

  CALL write3d(FileHandler,io_form,var_meta,DateStr(1:19),              &
               albdo12m,nx,ny,12,fzone_wrf,                             &
               temlg,temlg,nxlg-1,nylg-1,12)

  DEALLOCATE(temlg)

  istatus = 0

  RETURN
END SUBROUTINE write_wrf_static