<p><b>fanglin.yang@noaa.gov</b> 2012-10-22 22:36:40 -0600 (Mon, 22 Oct 2012)</p><p>update for Linux version<br>
</p><hr noshade><pre><font color="gray">Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/core_atmos_physics_gfs/driver_gfscolumn.f_ccs
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/core_atmos_physics_gfs/driver_gfscolumn.f_ccs                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/core_atmos_physics_gfs/driver_gfscolumn.f_ccs        2012-10-23 04:36:40 UTC (rev 2258)
@@ -0,0 +1,513 @@
+!--This driver prepares atmospheric and surface initial conditions and
+!  runs NCEP/GFS physics at selected points as single column models.
+!  May 2012, Fanglin Yang              
+!
+!===============================
+       PROGRAM driver_gfscolumn
+!===============================
+
+      use machine
+      use Sfc_Flx_ESMFMod
+      use Nst_Var_ESMFMod
+      implicit none
+      include 'mpif.h'
+
+!----------------------------------------------------------
+!--gfs initial condition dimensions
+!     integer, parameter :: nlat=880, nlon=1760, levs=64    !T574
+!     integer, parameter :: nlat=94, nlon=192, levs=64      !T62
+      integer, parameter :: levs=64   
+      integer, parameter :: lsoil=4, nmtvr=14                            
+      integer, parameter :: nsfc=47, nsig=11                      
+
+!--fields included in GFS analysis siganl. ss2gg iss used to 
+!--convert spectral coefficients to gaussian grid. 
+!  HS    1 99 surface orography (m)
+!  PS    1 99 surface pressure (Pa)
+!  P    64 99 pressure (Pa)
+!  DP   64 99 delta pressure (Pa)
+!  T    64 99 temperature (K)
+!  Q    64 99 specific humidity (kg/kg)
+!  RH   64 99 relative humidity (%)
+!  U    64 99 zonal wind (m/s)
+!  V    64 99 meridional wind (m/s)
+!  DIV  64 99 divergence (m/s**2)
+!  VOR  64 99 vorticity (m/s**2)
+!  Q2   64 99 tracer 2, ozone (kg/kg)
+!  Q3   64 99 tracer 3, cloud water (kg/kg)
+      real(kind=kind_io4), allocatable :: hs(:,:), ps(:,:)
+      real(kind=kind_io4), allocatable :: sigini(:,:,:,:)
+
+!--fields included in GFS analysis sfcanl. sfc2gg is used to 
+!--convert spectral coefficients to gaussian grid. 
+!  tsea   smc(4) sheleg stc(4) tg3    zorl   
+!  cv     cvb    cvt    alvsf  alvwf  alnsf  
+!  alnwf  slmsk  vfrac  canopy f10m   vtype  
+!  stype  facsf  facwf  uustar ffmm   ffhh   
+!  hice   fice   tprcp  srflag snwdph slc(4) 
+!  shdmin shdmax slope  snoalb oro    t2m    
+!  q2m    tisfc  
+      real(kind=kind_io4), allocatable :: sfcini(:,:,:)
+!
+!--mountain variance and orientation etc
+      real(kind=kind_io4), allocatable :: hprime0(:,:,:)
+!
+      real(kind=kind_phys),allocatable :: latgfs(:),longfs(:)
+!-------------------------------------------------------------
+
+!--column model parameters and arrays
+
+!     integer, parameter :: ncell=10, nair=9          
+      integer, parameter :: nair=9          
+      TYPE(Sfc_Var_Data)    :: sfc_mpas
+      TYPE(Flx_Var_Data)    :: flx_mpas
+      TYPE(Nst_Var_Data)    :: nst_mpas
+
+      integer(kind=kind_io4)  :: kdt,nodes,node0,nlunit
+      integer(kind=kind_io4)  :: idate(4)
+      character(len=80)       :: gfs_namelist
+      real(kind=kind_phys)    :: dt, fhour, fhend
+
+      real(kind=kind_phys), allocatable :: xlat(:)    !in radian
+      real(kind=kind_phys), allocatable :: xlon(:)    !in radian
+      real(kind=kind_phys), allocatable :: air_mpas(:,:,:)
+      real(kind=kind_io4),  allocatable :: hprim_mpas(:,:)
+
+      real(kind=kind_phys) :: pi                                 
+      integer :: i,j,k,m,n, ierr, nkdt,irec
+      logical :: lprnt
+      integer :: numtasks,taskid
+
+!-------------------------------------------------------------
+      integer      :: iargc
+      external     :: iargc
+      integer      :: nargs       ! number of command-line arguments
+      character*70 :: argument    ! space for command-line argument
+      integer      :: jcap, cdate, ncell ,nlat, nlon
+
+      nargs = iargc()             !  iargc() - number of argument after .exe
+      if (nargs.lt.4) then
+        write(*,*)'usage : gfscolumn.exe jcap cdate, ncell, fhend'                           
+        call abort
+      endif
+      call getarg(1,argument); read(argument,*) jcap    
+      call getarg(2,argument); read(argument,*) cdate    
+      call getarg(3,argument); read(argument,*) ncell    
+      call getarg(4,argument); read(argument,*) fhend  !forecast hours  
+
+      if (jcap.eq.574) then
+       nlon=1760; nlat=880
+      elseif (jcap.eq.382) then
+       nlon=1152; nlat=576
+      elseif (jcap.eq.126) then
+       nlon=384; nlat=190
+      elseif (jcap.eq.62) then
+       nlon=192; nlat=94
+      else
+       write(*,*) &quot;JCAP is not valid. stop&quot;
+       call abort
+      endif
+
+      allocate ( hs(nlon,nlat), ps(nlon,nlat) )
+      allocate ( sigini(nlon,nlat,levs,nsig) )
+      allocate ( sfcini(nlon,nlat,nsfc) )
+      allocate ( hprime0(nlon,nlat,nmtvr) )
+      allocate ( latgfs(nlat),longfs(nlon) )
+
+      allocate ( xlat(ncell), xlon(ncell) )  
+      allocate ( air_mpas(nair,ncell,levs) )
+      allocate ( hprim_mpas(ncell,nmtvr) )
+     
+
+!--GFS initial condition date, 1-hour,2-month,3-day,4-year
+      idate(4)=cdate/1000000
+      idate(2)=mod(cdate,1000000)/10000
+      idate(3)=mod(cdate,10000)/100
+      idate(1)=mod(cdate,100)
+      print*,&quot;cdate: &quot;,cdate
+      print*,&quot;yyyy mm dd hh:&quot;,idate(4),idate(2),idate(3),idate(1)
+       
+!-------------------------------------------------------------
+
+      call MPI_INIT( ierr )
+      call MPI_COMM_RANK( MPI_COMM_WORLD, taskid, ierr )
+      call MPI_COMM_SIZE( MPI_COMM_WORLD, numtasks, ierr )
+      print *, 'task ID= ',taskid, 'numtasks=',numtasks
+      if (taskid.eq.0) then
+
+      pi=4.0*atan(1.0)
+      lprnt=.false.
+
+!-------------------------------------------
+!! read in air and surface initial conditions
+       open(11,file=&quot;sig_ini&quot;,form=&quot;unformatted&quot;,status=&quot;unknown&quot;,
+     &amp;  access=&quot;direct&quot;,recl=nlat*nlon*4)                        
+       open(12,file=&quot;sfc_ini&quot;,form=&quot;unformatted&quot;,status=&quot;unknown&quot;)
+       print*, &quot;open sig_ini and sfc_ini&quot;
+
+      irec=1
+      read(11,rec=irec) (( hs(i,j),i=1,nlon),j=1,nlat)
+      irec=irec+1
+      read(11,rec=irec) (( ps(i,j),i=1,nlon),j=1,nlat)
+      do n=1,nsig
+      do k=1,levs
+       irec=irec+1
+       read(11,rec=irec) (( sigini(i,j,k,n),i=1,nlon),j=1,nlat)
+      enddo
+      enddo
+      do n=1,nsfc
+       read(12) (( sfcini(i,j,n),i=1,nlon),j=1,nlat)
+      enddo
+
+!--mountain variance etc
+       read(24) hprime0     
+
+!!  GFS latidue and longitude grids 
+       open(13,file=&quot;nlat_points.txt&quot;,
+     &amp;         form=&quot;formatted&quot;,status=&quot;unknown&quot;)
+       read(13,'(5f12.6)') (latgfs(j),j=nlat,1,-1)
+       do i=1,nlon
+        longfs(i)=360.0/nlon*(i-1)
+       enddo
+
+!     if(lprnt) print*, &quot;latgfs= &quot;,latgfs
+!     if(lprnt) print*, &quot;longfs= &quot;,longfs
+!---------------------------------------------
+!! pick selected points from GFS global initial 
+!! conditions and pass them  to the column model
+
+!-- define and allocate space for sfc_mpas and flx_mpas for column model 
+       call sfcvar_aldata(ncell,1,lsoil,sfc_mpas,ierr)
+       call flxvar_aldata(ncell,1,flx_mpas,ierr)
+       call flx_init(flx_mpas,ierr)
+
+!-- define and allocate space for nst_mpas for column model (not used)
+       call nstvar_aldata(ncell,1,nst_mpas,ierr)
+       call nst_init(nst_mpas,ierr)
+
+       do n=1,ncell
+         i=min(1.0*nlon,nlon/2+0.5*nlon/ncell*(n-1))
+         j=min(1.0*nlat,nlat/4+0.5*nlat/ncell*(n-1))
+
+         xlat(n)=latgfs(j)/180*pi
+         xlon(n)=longfs(i)/180*pi
+         print*, &quot;lat,lon: &quot;,latgfs(j),longfs(i)
+
+!--mountain variance etc 
+         do k=1,nmtvr
+          hprim_mpas(n,k)=hprime0(i,j,k)
+         enddo
+
+!--upper air variables 
+         air_mpas(1,n,1)=ps(i,j)    !interface pressure in pasca
+         do k=2,levs
+          air_mpas(1,n,k)=air_mpas(1,n,k-1) - sigini(i,j,k-1,2)               
+         enddo
+         do k=1,levs
+          air_mpas(2,n,k)=sigini(i,j,k,1)      !integer-layer pressure in pasca              
+          air_mpas(3,n,k)=sigini(i,j,k,6)      !integer-layer zonal wind in m/s            
+          air_mpas(4,n,k)=sigini(i,j,k,7)      !integer-layer meridional wind in m/s            
+          air_mpas(5,n,k)=0.0                  !integer-layer vertical velocity in pa/s          
+          air_mpas(6,n,k)=sigini(i,j,k,3)      !integer-layer temperature in K           
+          air_mpas(7,n,k)=sigini(i,j,k,4)      !integer-layer specific humidity in kg/kg 
+          air_mpas(8,n,k)=sigini(i,j,k,10)     !integer-layer ozone mixing ratio in kg/kg 
+          air_mpas(9,n,k)=sigini(i,j,k,11)     !integer-layer cloud water mixing ratio in kg/kg 
+         enddo
+
+         if(lprnt) then
+           print*, &quot;n,i,j&quot;,n,i,j, &quot; xlat,xlon &quot;,xlat(ncell), xlon(ncell) 
+           print*, &quot;pi: &quot;,(air_mpas(1,n,k),k=1,levs)
+           print*, &quot;pl: &quot;,(air_mpas(2,n,k),k=1,levs)
+           print*, air_mpas(3,n,1), air_mpas(4,n,1),
+     &amp;             air_mpas(5,n,1), air_mpas(6,n,1), air_mpas(7,n,1),
+     &amp;             air_mpas(8,n,1), air_mpas(9,n,1)
+           print*, &quot;hprim: &quot;,(hprim_mpas(n,k),k=1,nmtvr)
+         endif
+
+!--surface variables 
+         m=1
+          sfc_mpas%tsea   (n,1) = sfcini(i,j,1)
+         do k=1,lsoil 
+          m=m+1
+          sfc_mpas%smc    (n,k,1) = sfcini(i,j,m)
+         enddo
+          m=m+1
+          sfc_mpas%sheleg (n,1) = sfcini(i,j,m)
+         do k=1,lsoil 
+          m=m+1
+          sfc_mpas%stc    (n,k,1) = sfcini(i,j,m)
+         enddo
+         m=m+1
+          sfc_mpas%tg3    (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%zorl   (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%cv     (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%cvb    (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%cvt    (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%alvsf  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%alvwf  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%alnsf  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%alnwf  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%slmsk  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%vfrac  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%canopy (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%f10m   (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%vtype  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%stype  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%facsf  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%facwf  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%uustar (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%ffmm   (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%ffhh   (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%hice   (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%fice   (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%tprcp  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%srflag (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%snwdph (n,1) = sfcini(i,j,m)
+         do k=1,lsoil 
+         m=m+1
+          sfc_mpas%slc    (n,k,1) = sfcini(i,j,m)
+         enddo
+         m=m+1
+          sfc_mpas%shdmin (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%shdmax (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%slope  (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%snoalb (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%oro    (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%t2m    (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%q2m    (n,1) = sfcini(i,j,m)
+         m=m+1
+          sfc_mpas%tisfc  (n,1) = sfcini(i,j,m)
+
+!        print*, &quot;m=&quot;,m, &quot; nsfc=&quot;,nsfc
+         if(m.ne.nsfc) then
+           print*, &quot;m != nsfc, exit &quot;
+           call abort
+         endif
+
+        enddo
+!---------------------------------------------

+!---------------------------------------------
+!---------------------------------------------
+!! call column model, integration over time
+
+       dt=120                   !time step in seconds
+       nkdt=fhend*3600/dt+1
+       nodes=1
+       node0=taskid
+       nlunit=99                !unit for reading gfs_namelis
+       gfs_namelist=&quot;gfs_namelist&quot;

+       do 100 kdt=1,nkdt
+        fhour=(kdt-1)*dt/3600.0
+
+        print*
+        print*, &quot;-------------------------------------&quot;
+        print*, &quot;kdt=&quot;,kdt, &quot; dt=&quot;,dt, &quot; fhour=&quot;,fhour
+        print*, &quot;-------------------------------------&quot;
+
+
+!--column model output
+       call column_wrt(nair,levs,ncell,air_mpas,sfc_mpas,flx_mpas)
+
+       call do_tstep_gfs(hprim_mpas,
+     &amp;     flx_mpas,nst_mpas,sfc_mpas,air_mpas,
+     &amp;     dt,kdt,fhour,idate,levs,
+     &amp;     ncell,nair,xlat,
+     &amp;     xlon,nodes,node0,nlunit,
+     &amp;     gfs_namelist)
+ 100   continue 
+
+
+      endif
+      call MPI_FINALIZE(ierr)
+
+
+      deallocate ( hs,ps,sigini,sfcini,hprime0,latgfs,longfs )
+      deallocate ( xlat,xlon,air_mpas,hprim_mpas)  
+      END
+
+
+!-----------------------------------------------------------------------
+!-----------------------------------------------------------------------
+!write column output in real*4 binary format
+      subroutine column_wrt(nair,levs,ncell,air_mpas,sfc_mpas,flx_mpas)
+
+      use machine, only : kind_phys
+      use Sfc_Flx_ESMFMod
+
+      IMPLICIT NONE
+      TYPE(Sfc_Var_Data)   :: sfc_mpas
+      TYPE(Flx_Var_Data)   :: flx_mpas
+
+      integer, parameter :: lsoil=4
+      integer :: i,j,k,ncell,nair,levs
+      real(kind=kind_phys) :: air_mpas(nair,ncell,levs)
+      real*4 :: buff4(ncell)
+      logical :: first 
+      data first /.true./
+      save first
+
+      if(first) then
+       open(191,file=&quot;gfscolumn_air.bin&quot;,
+     &amp;         form=&quot;unformatted&quot;,status=&quot;unknown&quot;)
+       open(192,file=&quot;gfscolumn_sfc.bin&quot;,
+     &amp;          form=&quot;unformatted&quot;,status=&quot;unknown&quot;)
+       open(193,file=&quot;gfscolumn_flx.bin&quot;,
+     &amp;          form=&quot;unformatted&quot;,status=&quot;unknown&quot;)
+       first=.false.
+      endif
+
+!--upper air variables
+      do j=1,nair
+      do k=1,levs
+       buff4(:)=air_mpas(j,:,k); write(191) buff4
+      enddo
+      enddo
+
+
+!--surface variables
+        buff4(:)=sfc_mpas%tsea(:,1);  write(192)buff4
+        do k=1,lsoil
+          buff4(:)=sfc_mpas%smc(:,k,1); write(192)buff4
+        enddo
+        buff4(:)=sfc_mpas%sheleg(:,1); write(192)buff4
+        do k=1,lsoil
+          buff4(:)=sfc_mpas%stc(:,k,1); write(192)buff4
+        enddo
+        buff4(:)=sfc_mpas%tg3(:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%zorl   (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%cv     (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%cvb    (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%cvt    (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%alvsf  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%alvwf  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%alnsf  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%alnwf  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%slmsk  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%vfrac  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%canopy (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%f10m   (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%vtype  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%stype  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%facsf  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%facwf  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%uustar (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%ffmm   (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%ffhh   (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%hice   (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%fice   (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%tprcp  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%srflag (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%snwdph (:,1);  write(192)buff4
+        do k=1,lsoil
+          buff4(:)=sfc_mpas%slc(:,k,1); write(192)buff4
+        enddo
+        buff4(:)=sfc_mpas%shdmin (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%shdmax (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%slope  (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%snoalb (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%oro    (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%t2m    (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%q2m    (:,1);  write(192)buff4
+        buff4(:)=sfc_mpas%tisfc  (:,1);  write(192)buff4
+
+
+!--flux variables
+       buff4(:)=flx_mpas%SFCDSW  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%COSZEN  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%PWAT    (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%TMPMIN  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%TMPMAX  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SPFHMIN (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SPFHMAX (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DUSFC   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DVSFC   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DTSFC   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DQSFC   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DLWSFC  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%ULWSFC  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%GFLUX   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%RUNOFF  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%EP      (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%CLDWRK  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DUGWD   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DVGWD   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%PSMEAN  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%GESHEM  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%BENGSH  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SFCNSW  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SFCDLW  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%TSFLW   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%PSURF   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%U10M    (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%V10M    (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%HPBL    (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%CHH     (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%CMM     (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%EPI     (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DLWSFCI (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%ULWSFCI (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%USWSFCI (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DSWSFCI (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DTSFCI  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%DQSFCI  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%GFLUXI  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SRUNOFF (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%T1      (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%Q1      (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%U1      (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%V1      (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%ZLVL    (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%EVBSA   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%EVCWA   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%TRANSA  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SBSNOA  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SNOWCA  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SOILM   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SNOHFA  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SMCWLT2 (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%SMCREF2 (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%suntim  (:,1) ;write(193)buff4                      
+       buff4(:)=flx_mpas%sfcemis (:,1) ;write(193)buff4                     
+       buff4(:)=flx_mpas%gsoil   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%gtmp2m  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%gustar  (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%gpblh   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%gu10m   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%gv10m   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%gzorl   (:,1) ;write(193)buff4                
+       buff4(:)=flx_mpas%goro    (:,1) ;write(193)buff4                
+
+
+       end  subroutine column_wrt

</font>
</pre>