!
!##################################################################
!##################################################################
!###### ######
!###### SUBROUTINE SOILDIAG ######
!###### ######
!###### Developed by ######
!###### Center for Analysis and Prediction of Storms ######
!###### University of Oklahoma ######
!###### ######
!##################################################################
!##################################################################
!
SUBROUTINE soildiag(nx,ny,nz,x,y,z, & 1,1
soiltyp,vegtyp,lai,roufns,veg,hterain, &
tsfc,tsoil,wetsfc,wetdp,wetcanp, qvsfc, &
usflx,vsflx,ptsflx,qvsflx, &
windsp,psfc,rhoa,precip, &
tair,qvair, &
cdha,cdqa,cdma, &
radsw, rnflx, &
shflx,lhflx,gflx,ct, &
evaprg,evaprtr,evaprr, qvsat, &
qvsata,f34)
!
!-----------------------------------------------------------------------
!
! PURPOSE:
!
! Calculate and print out diagnostics for the surface processes.
!
!-----------------------------------------------------------------------
!
! AUTHOR: Yuhe Liu
! 08/02/94
!
! MODIFICATION HISTORY:
!
! 10/31/94 (Y. Liu)
! Re-wrote the subroputine to make it more general.
!
! 02/07/1995 (Yuhe Liu)
! Added a new 2-D array, veg(nx,ny), to the diagnostic printing list
!
! 03/27/1995 (Yuhe Liu)
! Changed the solor radiation used in the calculation of surface
! resistence factor F1 from the one at the top of atmosphere to the
! one at the surface.
!
! 03/27/1995 (Yuhe Liu)
! Added the surface resistence into the data dumping.
!
!-----------------------------------------------------------------------
!
! INPUT:
!
! nx Number of grid points in the x-direction (east/west)
! ny Number of grid points in the y-direction (north/south)
!
! soiltyp Soil type at the horizontal grid points
! vegtyp Vegetation type at the horizontal grid points
! lai Leaf Area Index
! roufns Surface roughness
! veg Vegetation fraction
! hterain The height of surface terrain
!
! tsfc Temperature at ground surface (K)
! tsoil Deep soil temperature (K)
! wetsfc Surface soil moisture
! wetdp Deep soil moisture
! wetcanp Canopy water amount
! windsp Wind speed just above the surface (m/s)
!
! usflx Surface flux of u-momentum
! vsflx Surface flux of v-momentum
! ptsflx Surface flux of heat (K*kg/(m**2*s))
! qvsflx Surface flux of moisture (K*kg/(m**2*s))
!
! psfc Surface pressure (Pascal)
! rhoa Near sfc air density
! prcpln Precipitation path length
! tair Air temperature (K) near the surface
! qvair S.H. near the surface
! cdha Surface drag coefficient for heat
! cdqa Surface drag coefficient for moisture
! cdma Surface drag coefficient for momentum
! zenith Zenith
! radsw Solar radiation at the top of atmosphere
! f34 Input coefficient: f3*f4, output surface resistance
!
! OUTPUT:
!
! rnflx Net radiation flus
! shflx Sensible heat flux
! lhflx Latent heat flux
! gflx Diffusive heat flux from ground surface to deep soil
! rsw Net short wave radiation to the surface
! rlwu Up-ward long wave radiation flux
! rlwd Down-ward long wave radiation flux
! trwv Transmisivity due to water vapor
! trsw Total transmisivity
! alfz Zenith dependent albedo
! alf Albedo
! ct Thermal capacity
! f34 Surface resistence
! qvsat Surface specific humidity at saturation
! evaprg Evaporation from groud surface
! evaprtr Transpiration of the remaining part (1-delta) of leaves
! evaprr Direct evaporation from the fraction delta
!
! WORK ARRAY:
!
!-----------------------------------------------------------------------
!
IMPLICIT NONE
!
INTEGER :: nx,ny,nz
REAL :: x(nx) ! X-coordinates
REAL :: y(ny) ! Y-coordinates
REAL :: z(nz) ! Z-coordinates
INTEGER :: soiltyp(nx,ny) ! Soil type at the horizontal grid points
INTEGER :: vegtyp (nx,ny) ! Vegetation type at the horizontal grid points
REAL :: lai (nx,ny) ! Leaf Area Index
REAL :: roufns (nx,ny) ! Surface roughness
REAL :: veg (nx,ny) ! Vegetation fraction
REAL :: hterain(nx,ny) ! The height of surface terrain
REAL :: tsfc (nx,ny) ! Temperature at ground surface (K)
REAL :: tsoil (nx,ny) ! Deep soil temperature (K)
REAL :: wetsfc (nx,ny) ! Surface soil moisture
REAL :: wetdp (nx,ny) ! Deep soil moisture
REAL :: wetcanp(nx,ny) ! Canopy water amount
REAL :: qvsfc (nx,ny) ! Effective S.H. at sfc.
REAL :: usflx (nx,ny) ! surface flux of u-momentum (kg/(m*s**2))
REAL :: vsflx (nx,ny) ! surface flux of v-momentum (kg/(m*s**2))
REAL :: ptsflx (nx,ny) ! surface flux of heat (K*kg/(m**2*s))
REAL :: qvsflx (nx,ny) ! surface flux of moisture (kg/(m**2*s))
REAL :: windsp (nx,ny) ! Wind speed just above the surface (m/s)
REAL :: psfc (nx,ny) ! Surface pressure (Pascal)
REAL :: rhoa (nx,ny) ! Near sfc air density
REAL :: precip (nx,ny) ! Precipitation flux reaching the surface
REAL :: tair (nx,ny) ! Air temperature (K) near the surface
REAL :: qvair (nx,ny) ! S.H. near the surface
REAL :: cdha (nx,ny) ! Surface drag coefficient for heat
REAL :: cdqa (nx,ny) ! Surface drag coefficient for moisture
REAL :: cdma (nx,ny) ! Surface drag coefficient for momentum
REAL :: radsw (nx,ny) ! Solar radiation to the surface
REAL :: rnflx (nx,ny) ! Net radiation flus
REAL :: shflx (nx,ny) ! Sensible heat flux
REAL :: lhflx (nx,ny) ! Latent heat flux
REAL :: gflx (nx,ny) ! Diffusive heat flux from ground surface to
! deep soil
REAL :: ct (nx,ny) ! Thermal capacity
REAL :: evaprg (nx,ny) ! Evaporation from groud surface
REAL :: evaprtr(nx,ny) ! Transpiration of the remaining part
! (1-delta) of leaves
REAL :: evaprr (nx,ny) ! Direct evaporation from the fraction delta
REAL :: qvsat (nx,ny) ! Surface specific humidity at saturation
REAL :: qvsata (nx,ny) ! qvsat(tair) (kg/kg)
REAL :: f34 (nx,ny) ! f34 and surface resistance
!
!-----------------------------------------------------------------------
!
! Include files: globcst.inc and phycst.inc
!
! solarc Solar constant (W/m**2)
! emissg Emissivity of the ground
! emissa Emissivity of the atmosphere
! sbcst Stefen-Boltzmann constant
!
!-----------------------------------------------------------------------
!
INCLUDE 'globcst.inc'
!
!-----------------------------------------------------------------------
!
! Local variables:
!
!-----------------------------------------------------------------------
!
LOGICAL :: dumpsfc
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! Beginning of executable code...
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
dumpsfc = .false.
IF ( (curtim > tstart) .AND. (nhisdmp > 0) )THEN
IF ( hdmpopt == 1 )THEN
dumpsfc = MOD(nstep,nhisdmp) == 0
ELSE IF ( hdmpopt == 2 )THEN
dumpsfc = nstep == hdmpstp(nhisdmp)
END IF
ELSE IF ( curtim == tstart ) THEN
dumpsfc = .true.
END IF
IF ( .NOT.dumpsfc ) THEN
RETURN
END IF
WRITE (6,'(a,i8,a,f10.2,a)') &
' Dump surface and soil-veg variables at time step, ',nstep, &
', model time=',curtim,' (s)'
!
!-----------------------------------------------------------------------
!
! Calculate the saturated specific humidity, qvsats.
!
!-----------------------------------------------------------------------
!
CALL wrtflx
(nx,ny,nz,x,y,z, &
soiltyp,vegtyp,lai,roufns,veg,hterain, &
tsfc,tsoil,wetsfc,wetdp,wetcanp, qvsfc, &
usflx,vsflx,ptsflx,qvsflx, &
windsp,psfc,rhoa,precip, &
tair,qvair, &
cdha,cdqa,cdma, &
radsw, rnflx, &
shflx,lhflx,gflx,ct, &
evaprg,evaprtr,evaprr,qvsat, &
qvsata, f34)
RETURN
END SUBROUTINE soildiag
!
!
!##################################################################
!##################################################################
!###### ######
!###### SUBROUTINE WRTFLX ######
!###### ######
!###### Developed by ######
!###### Center for Analysis and Prediction of Storms ######
!###### University of Oklahoma ######
!###### ######
!##################################################################
!##################################################################
!
SUBROUTINE wrtflx(nx,ny,nz,x,y,z, & 1,37
soiltyp,vegtyp,lai,roufns,veg,hterain, &
tsfc,tsoil,wetsfc,wetdp,wetcanp, qvsfc, &
usflx,vsflx,ptsflx,qvsflx, &
windsp,psfc,rhoa,precip,tair,qvair, &
cdh,cdq,cdm, &
radsw, rnflx, &
shflx,lhflx,gflx, ct, &
evaprg,evaprtr,evaprr,qvsat, &
qvsata,f34)
!
!-----------------------------------------------------------------------
!
! PURPOSE:
!
! Write surface fields in GrADS format for diagnostic purpose.
!
!-----------------------------------------------------------------------
!
! AUTHOR: Yuhe Liu
! 4/15/1994.
!
! MODIFICATION HISTORY:
!
! 10/30/94 (Y. Liu)
! using the real names for variables instead of temporary array
! names.
!
! 02/07/1995 (Yuhe Liu)
! Added a new 2-D array, veg(nx,ny), to the diagnostic printing list
!
!-----------------------------------------------------------------------
!
! INPUT:
!
! nx Number of grid points in the x-direction (east/west)
! ny Number of grid points in the y-direction (north/south)
!
! soiltyp Soil type
! vegtyp Vegetation type
! lai Leaf Area Index
! roufns Surface roughness
! veg Vegetation fraction
! hterain The height of surface terrain
!
! tsfc Skin temperature at the ground or ocean surface (K)
! tsoil Deep soil temperature (K) (in 1 m deep layer)
! wetsfc Surface soil moisture
! wetdp Deep soil moisture
! wetcanp Canopy moisture
! qvsfc Effective specific humidity at sfc.
!
! usflx Surface flux of u-momentum
! vsflx Surface flux of v-momentum
! ptsflx Surface flux of heat (K*kg/(m**2*s))
! qvsflx Surface flux of moisture (K*kg/(m**2*s))
!
! windsp Wind speed (m/s)
! rhosfc Surface air density (kg/m**3)
! psfc Surface pressure (Pascal)
! preci Precipitation flux reaching the surface
! cdh Surface drag coefficient for heat
! cdq Surface drag coefficient for moisture
! cdm Surface drag coefficient for momentum
!
! radsw Incoming solar radiation flux at surface
! rnflx Net radiation flux
! shflx Sensible heat flux
! lhflx Latent heat flux
! gflx Diffusive ground heat flux
! evaprg Evaporation from groud surface
! evaprtr Transpiration of the remaining part (1-delta) of leaves
! evaprr Direct evaporation from the fraction delta
! f34 Surface resistence
! ct Thermal capacity
! qvsat Surface specific humidity at saturation, qvs(Ts)
! qvsata Surface air specific humidity at saturation, qvs(Ta)
!
!-----------------------------------------------------------------------
!
!
!-----------------------------------------------------------------------
!
! Variable Declarations.
!
!-----------------------------------------------------------------------
!
IMPLICIT NONE
INTEGER :: nx,ny,nz ! The number grid points in 3 directions
REAL :: x(nx) ! X-coordinates
REAL :: y(ny) ! Y-coordinates
REAL :: z(nz) ! Z-coordinates
INTEGER :: soiltyp(nx,ny) ! Soil type at each point
INTEGER :: vegtyp (nx,ny) ! Vegetation type at each point
REAL :: lai (nx,ny) ! Leaf Area Index
REAL :: roufns (nx,ny) ! Surface roughness
REAL :: veg (nx,ny) ! Vegetation fraction
REAL :: hterain(nx,ny) ! The height of surface terrain
!
REAL :: tsfc (nx,ny) ! Temperature at surface (K) (in 1 cm top layer)
REAL :: qvsfc (nx,ny) ! Effective S.H. at sfc.
REAL :: tsoil (nx,ny) ! Deep soil temperature (K) (in 1 m deep layer)
REAL :: wetsfc (nx,ny) ! Surface soil moisture
REAL :: wetdp (nx,ny) ! Deep soil moisture
REAL :: wetcanp(nx,ny) ! Canopy water amount
!
REAL :: usflx (nx,ny) ! surface flux of u-momentum (kg/(m*s**2))
REAL :: vsflx (nx,ny) ! surface flux of v-momentum (kg/(m*s**2))
REAL :: ptsflx (nx,ny) ! surface flux of heat (K*kg/(m**2*s))
REAL :: qvsflx (nx,ny) ! surface flux of moisture (kg/(m**2*s))
REAL :: windsp (nx,ny) ! Wind speed just above the surface (m/s)
REAL :: psfc (nx,ny) ! Surface pressure (Pascal)
REAL :: rhoa (nx,ny) ! Near sfc air density
REAL :: precip (nx,ny) ! Precipitation flux reaching the surface
REAL :: tair (nx,ny) ! Air temperature near the surface
REAL :: qvair (nx,ny) ! Specific humidity near the surface
REAL :: cdh (nx,ny) ! Surface drag coefficient for heat
REAL :: cdq (nx,ny) ! Surface drag coefficient for moisture
REAL :: cdm (nx,ny) ! Surface drag coefficient for momentum
REAL :: radsw (nx,ny) ! Incoming solar radiation at surface
REAL :: rnflx (nx,ny) ! Net radiation flus
REAL :: shflx (nx,ny) ! Sensible heat flux
REAL :: lhflx (nx,ny) ! Latent heat flux
REAL :: gflx (nx,ny) ! Diffusive heat flux from ground surface to
! deep soil
REAL :: ct (nx,ny) ! Thermal capacity
REAL :: evaprg (nx,ny) ! Evaporation from groud surface
REAL :: evaprtr(nx,ny) ! Transpiration of the remaining part
! (1-delta) of leaves
REAL :: evaprr (nx,ny) ! Direct evaporation from the fraction delta
REAL :: qvsat (nx,ny) ! qvs(ts)
REAL :: qvsata (nx,ny) ! qvs(ta)
REAL :: f34 (nx,ny)
!
!-----------------------------------------------------------------------
!
! Misc. local variables:
!
!-----------------------------------------------------------------------
!
INTEGER :: k, m
INTEGER :: tnum,tint
INTEGER :: year1,month1,day1, hour1,minute1,second1
INTEGER :: jday1, loopdy
CHARACTER (LEN=2) :: dtunit
INTEGER :: mndys(12) ! days for each months
CHARACTER (LEN=3) :: monnam(12)
CHARACTER (LEN=70) :: flnctl, flnflx
INTEGER :: flxunit, flnctlen, flxlen
LOGICAL :: firstcall
INTEGER :: ierr
!
!-----------------------------------------------------------------------
!
! Include files
!
!-----------------------------------------------------------------------
!
INCLUDE 'globcst.inc'
INCLUDE 'grid.inc' ! Grid & map parameters.
INCLUDE 'phycst.inc'
INCLUDE 'soilcst.inc'
INCLUDE 'mp.inc' ! Message passing parameters.
!
!-----------------------------------------------------------------------
!
! Save and initialize variables.
!
!-----------------------------------------------------------------------
!
SAVE firstcall, flxunit,flnflx,flxlen
DATA firstcall/.true./
DATA mndys/0,31,59,90,120,151,181,212,243,273,304,334/
DATA monnam/'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', &
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'/
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! Beginning of executable code...
!
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
IF ( firstcall ) THEN
IF ( thisdmp <= 0.0 ) THEN
WRITE (6, '(/a,a)') &
'Since thisdmp <= 0, only data at the first time step ', &
'will be dumped.'
tnum = 1
tint = 1
dtunit = 'MN'
ELSE IF ( thisdmp < 60.0 ) THEN
WRITE (6, '(/a/a)') &
'GrADS reqiures the smallest uint minute for time interval.', &
'Here we use uint MN to represent the second.'
tnum = nint(tstop/thisdmp) + 1
tint = nint(thisdmp)
dtunit = 'MN'
ELSE IF ( thisdmp < 3600.0 ) THEN
tnum = nint(tstop/thisdmp) + 1
tint = nint(thisdmp/60.)
dtunit = 'MN'
ELSE IF ( thisdmp < 86400.0 ) THEN
tnum = nint(tstop/thisdmp) + 1
tint = nint(thisdmp/3600.)
dtunit = 'HR'
ELSE
tnum = nint(tstop/thisdmp) + 1
tint = nint(thisdmp/86400.)
dtunit = 'DY'
END IF
IF ( initopt /= 2 ) THEN
second1 = second
minute1 = minute
hour1 = hour
day1 = day
month1 = month
year1 = year
ELSE
second1 = MOD( second + nint(tstart), 60 )
minute1 = ( second + nint(tstart) ) / 60
minute1 = MOD( minute + minute1, 60 )
hour1 = ( minute + ( second + nint(tstart) ) / 60 ) /60
hour1 = MOD( hour + hour1, 24 )
day1 = ( hour + ( minute &
+ ( second + nint(tstart) ) / 60 ) /60 ) / 24
jday1 = jday + day1
loopdy = 0
IF ( MOD( year, 4 ) == 0 ) loopdy = 1
year1 = year + jday1 / ( 365 + loopdy )
jday1 = MOD( jday1, 365 + loopdy )
month1 = 1
DO m = 2, 11
IF ( jday1 > mndys(m) .AND. jday1 <= mndys(m+1) + loopdy ) month1 = m
END DO
day1 = jday1 - mndys(month1)
END IF
flnctlen = lfnkey + 7
flnctl(1:flnctlen) = runname(1:lfnkey)//'.sfcctl'
CALL fnversn
( flnctl, flnctlen )
flnflx(1:ldirnam) = dirname(1:ldirnam)
flxlen = ldirnam + lfnkey + 8
flnflx(1:flxlen) = flnflx(1:ldirnam)//'/'//runname(1:lfnkey) &
//'.sfcflx'
IF (mp_opt > 0) THEN
WRITE(flnflx, '(a,a,2i2.2)') &
runname(1:lfnkey),'.flx_',loc_x,loc_y
flxlen = lfnkey + 4 + 5
END IF
CALL fnversn
( flnflx, flxlen )
!
!-----------------------------------------------------------------------
!
! Open GrADS data control file for surface variables.
!
!-----------------------------------------------------------------------
!
IF (myproc == 0) THEN
CALL getunit
(flxunit)
OPEN (UNIT = flxunit, FILE = flnctl(1:flnctlen), &
FORM = 'formatted', STATUS = 'new')
WRITE (6,'(a,a,a)') 'The GrADS control file for surface ', &
'fluxes and other fields is ', flnctl(1:flnctlen)
WRITE (flxunit,'(a,a)') &
'TITLE Surface Fluxes, Temperature and Moisture ', &
runname(1:lfnkey)
WRITE (flxunit,'(a)') &
'*'
WRITE (flxunit,'(a,a)') &
'DSET ', flnflx(1:flxlen)
WRITE (flxunit,'(a)') &
'OPTIONS sequential cray_32bit_ieee'
WRITE (flxunit,'(a)') &
'UNDEF -9.e+33'
WRITE (flxunit,'(a,i8,a,2f10.4)') &
'XDEF ', nx, ' LINEAR ',(x(1)+x(2))/2000.,dx/1000.
WRITE (flxunit,'(a,i8,a,2f10.4)') &
'YDEF ', ny, ' LINEAR ',(y(1)+y(2))/2000.,dy/1000.
WRITE (flxunit,'(a,1x,i8,a)') &
'ZDEF',nz,' LEVELS '
WRITE (flxunit,'(8f10.2)') &
((z(k)+z(k+1))/2.,k=1,nz-1),z(nz)/1.
WRITE (flxunit,'(a,i8,a,i2.2,a,i2.2,a,i2.2,a3,i4.4, &
& 3X,i2.2,a)') &
'TDEF ', tnum, ' LINEAR ', &
hour1,':',minute1,'Z',day1,monnam(month1),year1, &
tint,dtunit
WRITE (flxunit,'(a)') &
'*'
WRITE (flxunit,'(a)') &
'VARS 37'
WRITE (flxunit,'(a)') &
'styp 0 -1,40,4 Soil type (4-byte integer)'
WRITE (flxunit,'(a,a)') &
'vtyp 0 -1,40,4 Vegetation type 4-byte integer)'
WRITE (flxunit,'(a)') &
'lai 0 99 Leaf Area Index'
WRITE (flxunit,'(a)') &
'rfns 0 99 Surface roughness'
WRITE (flxunit,'(a)') &
'veg 0 99 Vegetation fraction'
WRITE (flxunit,'(a)') &
'trn 0 99 Surface terrain'
WRITE (flxunit,'(a)') &
'va 0 99 Surface wind speed (m/s)'
WRITE (flxunit,'(a)') &
'ps 0 99 Surface pressure (Pascal)'
WRITE (flxunit,'(a)') &
'rhoa 0 99 Surface air density (kg/m**3)'
WRITE (flxunit,'(a,a)') &
'rain 0 99 Surface precipitation rate ', &
'(kg/s/m**2)'
WRITE (flxunit,'(a)') &
'ta 0 99 Surface air temperature (K)'
WRITE (flxunit,'(a,a)') &
'qva 0 99 Surface specific humidity (k', &
'g/kg) '
WRITE (flxunit,'(a)') &
'ct 0 99 Surface Heat Capacity'
WRITE (flxunit,'(a,a)') &
'qvsat 0 99 Specific humidity at ', &
'ground surface'
WRITE (flxunit,'(a)') &
'qvsata 0 99 Surface air specific humidity'
WRITE (flxunit,'(a)') &
'f34 0 99 Surface resistence'
WRITE (flxunit,'(a)') &
'cdh 0 99 Cdh'
WRITE (flxunit,'(a)') &
'cdq 0 99 Cdq'
WRITE (flxunit,'(a)') &
'cdm 0 99 Cdm'
WRITE (flxunit,'(a)') &
'eg 0 99 Evaporation from ground'
WRITE (flxunit,'(a,a)') &
'etr 0 99 Evaporation directly from ', &
'the foliage'
WRITE (flxunit,'(a,a)') &
'er 0 99 Transpiration of the part ', &
'of the leaves'
WRITE (flxunit,'(a,a)') &
'radsw 0 99 Incoming solar radiation ', &
'(W/m**2)'
WRITE (flxunit,'(a)') &
'rn 0 99 Net radiation (W/m**2)'
WRITE (flxunit,'(a)') &
'h 0 99 Sensible heat flux (W/m**2)'
WRITE (flxunit,'(a)') &
'le 0 99 Latent heat flux (W/m**2)'
WRITE (flxunit,'(a,a)') &
'g 0 99 Ground diffusive heat flux ', &
'(W/m**2)'
WRITE (flxunit,'(a)') &
'ts 0 99 Surface ground temperature (K)'
WRITE (flxunit,'(a)') &
't2 0 99 Deep ground temperature (K)'
WRITE (flxunit,'(a,a)') &
'qvsfc 0 99 Surface water vapor mixing ', &
'ratio'
WRITE (flxunit,'(a)') &
'wg 0 99 Surface soil moisture'
WRITE (flxunit,'(a)') &
'w2 0 99 Deep soil moisture'
WRITE (flxunit,'(a)') &
'wr 0 99 Canopy moisture'
WRITE (flxunit,'(a)') &
'uflx 0 99 U flux'
WRITE (flxunit,'(a)') &
'vflx 0 99 V flux'
WRITE (flxunit,'(a)') &
'ptflx 0 99 PT flux'
WRITE (flxunit,'(a)') &
'qvflx 0 99 QV flux'
WRITE (flxunit,'(a)') &
'ENDVARS'
CLOSE (flxunit)
CALL retunit (flxunit)
END IF
!-----------------------------------------------------------------------
!
! Open GrADS data file for surface variables.
!
!-----------------------------------------------------------------------
!
CALL getunit
(flxunit)
CALL asnctl
('NEWLOCAL', 1, ierr)
CALL asnfile
(flnflx(1:flxlen), '-F f77 -N ieee', ierr)
OPEN (UNIT = flxunit, FILE = flnflx(1:flxlen), &
FORM = 'unformatted', STATUS = 'new', &
ACCESS = 'sequential')
firstcall = .false.
END IF
WRITE (flxunit) soiltyp ! Soil type
WRITE (flxunit) vegtyp ! Veg. type
WRITE (flxunit) lai ! LAI
WRITE (flxunit) roufns ! Roughness
WRITE (flxunit) veg ! Veg
WRITE (flxunit) hterain ! Terrain
CALL edgfill
(windsp, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) windsp ! Va
CALL edgfill
(psfc, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) psfc ! Psfc
CALL edgfill
(rhoa, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) rhoa ! Sfc rhoa
CALL edgfill
(precip, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) precip ! Precipitation
CALL edgfill
(tair, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) tair ! Tair
CALL edgfill
(qvair, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) qvair ! Qvair
CALL edgfill
(ct, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) ct ! Ct
CALL edgfill
(qvsat, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) qvsat ! Qvsat
CALL edgfill
(qvsata, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) qvsata ! qvsata
CALL edgfill
(f34, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) f34 ! f34
CALL edgfill
(cdh, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) cdh ! cdh
CALL edgfill
(cdq, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) cdq ! cdq
CALL edgfill
(cdm, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) cdm ! cdm
CALL edgfill
(evaprg, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) evaprg ! Eg
CALL edgfill
(evaprtr,1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) evaprtr ! Etr
CALL edgfill
(evaprr, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) evaprr ! Er
CALL edgfill
(radsw, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) radsw ! Radsw
CALL edgfill
(rnflx, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) rnflx ! Net rad. flux
CALL edgfill
(shflx, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) shflx ! H flux
CALL edgfill
(lhflx, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) lhflx ! LE flux
CALL edgfill
(gflx, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) gflx ! G flux
CALL edgfill
(tsfc, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) tsfc ! Sfc. soil temp.
CALL edgfill
(tsoil, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) tsoil ! Deep soil temp.
CALL edgfill
(qvsfc, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) qvsfc ! Eff. SH dif.
CALL edgfill
(wetsfc, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) wetsfc ! Sfc. soil moist
CALL edgfill
(wetdp, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) wetdp ! Deep soil moist
CALL edgfill
(wetcanp,1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) wetcanp ! Canopy moist
CALL edgfill
(usflx, 1,nx,1,nx, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) usflx ! u flux
CALL edgfill
(vsflx, 1,nx,1,nx-1, 1,ny,1,ny, 1,1,1,1)
WRITE (flxunit) vsflx ! v flux
CALL edgfill
(ptsflx, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) ptsflx ! pt flux
CALL edgfill
(qvsflx, 1,nx,1,nx-1, 1,ny,1,ny-1, 1,1,1,1)
WRITE (flxunit) qvsflx ! qv flux
RETURN
END SUBROUTINE wrtflx