subroutine write_nonlinear(bck_u,bck_v,bck_tv,bck_q,bck_oz,bck_cw,bck_ps,itime,mype)
!$$$  subprogram documentation block
!                .      .    .                                       .
! subprogram:    write_nonlinear     
!   prgmmr: rancic                                    
!
! abstract:    write output of the nonlinear model run
!
! program history log:
!   2010-02-25  rancic
!
!
! attributes:
!   language: f90
!   machine:  ibm RS/6000 SP
!
!$$$
  use kinds,only: r_kind,i_kind
  use gridmod,only: nsig,lat2,lon2
  use tendsmod, only: what9,prsth9,r_prsum9,prdif9,r_prdif9,pr_xsum9,pr_ysum9
  use tends4pertmod, only: prsum9,rdtop9
  use pblmod, only: dudz,dvdz,dodz,zi,rdzi,rdzl, &
        uges0,vges0,oges0,pges0,tges0,uges1,vges1,oges1, &
        adragu,bdragu,cdragu,ddragu,adragv,bdragv,cdragv,ddragv
  use jfunc, only: first
  implicit none

! Declare passed variables
  real(r_kind),dimension(lat2,lon2,nsig),intent(in):: bck_u,bck_v,bck_tv, &
                                                      bck_q,bck_oz,bck_cw
  real(r_kind),dimension(lat2,lon2)     ,intent(in):: bck_ps
  integer(i_kind),intent(in):: itime,mype

  character(len=4):: ch_itime,ch_mype
  character(len=10):: fdir
  character(len=200):: fname
  character(len=200):: command
  integer(i_kind):: unit_nlrun,char_length


  write(ch_itime,'(i4.4)') itime
  write(ch_mype,'(i4.4)') mype

  fdir='nldir_'//ch_mype

  if(itime==0 .and. first) then
    command='mkdir '//fdir
    char_length=len_trim(command)
    call system(command(1:char_length))
  else 
     unit_nlrun=301+mype
     fname=fdir//'/file.'//ch_itime
     char_length=len_trim(fname)
     open(unit_nlrun,file=fname(1:char_length),form='unformatted')
           write(unit_nlrun) what9,prsth9,prsum9,r_prsum9,prdif9,r_prdif9, &
              pr_xsum9,pr_ysum9,rdtop9, &
              bck_u,bck_v,bck_tv,bck_q,bck_oz,bck_cw,bck_ps, &
              dudz,dvdz,dodz,zi,rdzi,rdzl, &
              uges0,vges0,oges0,pges0,tges0,uges1,vges1,oges1, &
              adragu,bdragu,cdragu,ddragu, &
              adragv,bdragv,cdragv,ddragv
     close(unit_nlrun)
  end if

end subroutine write_nonlinear