*IF DEF,SCMA                                                               S_DPGRAF.2      
C *****************************COPYRIGHT******************************     S_DPGRAF.3      
C (c) CROWN COPYRIGHT 1998, METEOROLOGICAL OFFICE, All Rights Reserved.    S_DPGRAF.4      
C                                                                          S_DPGRAF.5      
C Use, duplication or disclosure of this code is subject to the            S_DPGRAF.6      
C restrictions as set forth in the contract.                               S_DPGRAF.7      
C                                                                          S_DPGRAF.8      
C                Meteorological Office                                     S_DPGRAF.9      
C                London Road                                               S_DPGRAF.10     
C                BRACKNELL                                                 S_DPGRAF.11     
C                Berkshire UK                                              S_DPGRAF.12     
C                RG12 2SZ                                                  S_DPGRAF.13     
C                                                                          S_DPGRAF.14     
C If no contract has been raised with this copy of the code, the use,      S_DPGRAF.15     
C duplication or disclosure of it is strictly prohibited.  Permission      S_DPGRAF.16     
C to do so must first be obtained in writing from the Head of Numerical    S_DPGRAF.17     
C Modelling at the above address.                                          S_DPGRAF.18     
C ******************************COPYRIGHT******************************    S_DPGRAF.19     
C                                                                          S_DPGRAF.20     
C Subroutine DUMP_GRAF                                                     S_DPGRAF.21     
C Purpose:-           To DUMP diagnostics for graphics                     S_DPGRAF.22     
C                                                                          S_DPGRAF.23     
C Programmer:-        P.M. COX                                             S_DPGRAF.24     
C                                                                          S_DPGRAF.25     
C     Modification History:                                                S_DPGRAF.26     
C Version  Date                                                            S_DPGRAF.27     
C  4.5     07/98     SCM integrated as a standard UM configuration         S_DPGRAF.28     
C                    JC Thil.                                              S_DPGRAF.29     
C                                                                          S_DPGRAF.30     
C = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =      S_DPGRAF.31     
C                                                                          S_DPGRAF.32     

      Subroutine DUMP_GRAF(                                                 3S_DPGRAF.33     
                                ! IN dimension of dump array.              S_DPGRAF.34     
     &  points,nvars                                                       S_DPGRAF.35     
     &  ,nfor, nbl_levs, nsoilt_levs, nsoilm_levs, ntrop                   S_DPGRAF.36     
                                !                                          S_DPGRAF.37     
     &  ,dump, j, time, day, iun)                                          S_DPGRAF.38     
C---------------------------------------------------------------------     S_DPGRAF.39     
C     Arguments                                                            S_DPGRAF.40     
C---------------------------------------------------------------------     S_DPGRAF.41     
      Implicit none                                                        S_DPGRAF.42     
                                                                           S_DPGRAF.43     
      Integer                                                              S_DPGRAF.44     
     &  points                  ! IN no of model points.                   S_DPGRAF.45     
     &  ,nvars                  ! IN no. of variables in dump and          S_DPGRAF.46     
                                !  is equal to NPRIMVARS + X               S_DPGRAF.47     
                                !  where X is any no. of variables         S_DPGRAF.48     
                                !  (default 71)                            S_DPGRAF.49     
     &  ,nfor                   ! IN Number terms for observational        S_DPGRAF.50     
                                !  forcing                                 S_DPGRAF.51     
     &  ,nbl_levs               ! IN Number of Boundary layer levels       S_DPGRAF.52     
     &  ,nsoilt_levs            ! IN Number of soil temperature            S_DPGRAF.53     
                                !  levels                                  S_DPGRAF.54     
     &  ,nsoilm_levs            ! IN Number of soil moisture levels        S_DPGRAF.55     
     &  ,ntrop                  ! IN Max number of levels in the           S_DPGRAF.56     
                                !  troposphere                             S_DPGRAF.57     
     &  ,day                    ! Actual day in year                       S_DPGRAF.58     
      Real                                                                 S_DPGRAF.59     
     &  dump(points,nvars,*)                                               S_DPGRAF.60     
     &  ,time                   ! Actual time in day in secs.              S_DPGRAF.61     
C                                                                          S_DPGRAF.62     
C     Local variables                                                      S_DPGRAF.63     
C                                                                          S_DPGRAF.64     
                                                                           S_DPGRAF.65     
      Integer                                                              S_DPGRAF.66     
     &  iun                     ! Unit for output                          S_DPGRAF.67     
     &  ,i,j,k                  ! Counters                                 S_DPGRAF.68     
      Real                                                                 S_DPGRAF.69     
     &  sdump(nvars)            ! Temporary space.                         S_DPGRAF.70     
C                                                                          S_DPGRAF.71     
      Do k = 1, points                                                     S_DPGRAF.72     
        Do i = 1, nvars                                                    S_DPGRAF.73     
          sdump(i) = real(dump(k, i, j))                                   S_DPGRAF.74     
        enddo                                                              S_DPGRAF.75     
        Write (iun,*) day,time                                             S_DPGRAF.76     
        Write (iun,'(5(1PE17.10,","))') (sdump(i), i = 1, nvars)           S_DPGRAF.77     
      Enddo                                                                S_DPGRAF.78     
      Return                                                               S_DPGRAF.79     
      End                       ! Subroutine DUMP_GRAF                     S_DPGRAF.80     
                                                                           S_DPGRAF.81     

      Subroutine write_header(                                              1S_DPGRAF.82     
     &  outunit, nlevs, nwet, nbl_levs                                     S_DPGRAF.83     
     &  ,nsoilt_levs, nsoilm_levs, n_types                                 S_DPGRAF.84     
     &  ,timestep, ntrad, ndayin, nminin, nsecin, ndump                    S_DPGRAF.85     
     &  ,ak,bk,akh,bkh,single_step                                         S_DPGRAF.86     
     &  )                                                                  S_DPGRAF.87     
                                                                           S_DPGRAF.88     
      Implicit none                                                        S_DPGRAF.89     
                                                                           S_DPGRAF.90     
      Integer                                                              S_DPGRAF.91     
                                                                           S_DPGRAF.92     
     &  outunit, nlevs, nwet, nbl_levs                                     S_DPGRAF.93     
     &  ,nsoilt_levs, nsoilm_levs, n_types                                 S_DPGRAF.94     
     &  ,ntrad, ndayin, nhourin, nminin, nsecin, ndump                     S_DPGRAF.95     
                                                                           S_DPGRAF.96     
      Real                                                                 S_DPGRAF.97     
     &  timestep                                                           S_DPGRAF.98     
     &  ,ak(nlevs)                                                         S_DPGRAF.99     
     &  ,bk(nlevs)                                                         S_DPGRAF.100    
     &  ,akh(nlevs+1)                                                      S_DPGRAF.101    
     &  ,bkh(nlevs+1)                                                      S_DPGRAF.102    
                                                                           S_DPGRAF.103    
      Logical                                                              S_DPGRAF.104    
     &  single_step             ! Denotes single timestep file             S_DPGRAF.105    
                                                                           S_DPGRAF.106    
      Integer                                                              S_DPGRAF.107    
     &  ii                      ! Dummy variable for Ak and Bk             S_DPGRAF.108    
     &  ,jj                     ! Dummy variable to calc press             S_DPGRAF.109    
     &  ,kount                  ! Dummy variable to calc press             S_DPGRAF.110    
     &  ,mremak                 ! Remainder used to calc press             S_DPGRAF.111    
     &  ,mdivak                 ! Iteration no to calc press               S_DPGRAF.112    
      Character*50                                                         S_DPGRAF.113    
     &  outfmt                                                             S_DPGRAF.114    
                                                                           S_DPGRAF.115    
      nhourin = int(nminin/60.0+nsecin/3600.0)                             S_DPGRAF.116    
      if (single_step) then                                                S_DPGRAF.117    
        Write(outunit,*) "single timestep data"                            S_DPGRAF.118    
      endif                                                                S_DPGRAF.119    
      Write(outunit,fmt='(''vn4.5,nlev,nwet,nbllevs,nsoilt,nsoilm,'',      S_DPGRAF.120    
     &  ''ntypes,timestep,radtimestep,ndays,nhours,ndump-5i4,2f6.1,'',     S_DPGRAF.121    
     &  ''3i4'')')                                                         S_DPGRAF.122    
      Write(outunit,fmt='(6i4,2f6.1,3i4)')                                 S_DPGRAF.123    
     &  nlevs,nwet,nbl_levs,                                               S_DPGRAF.124    
     &  nsoilt_levs,nsoilm_levs,n_types,timestep,                          S_DPGRAF.125    
     &  ntrad*timestep,ndayin,nhourin,ndump                                S_DPGRAF.126    
                                !                                          S_DPGRAF.127    
      mdivak=nlevs/3.0                                                     S_DPGRAF.128    
      mremak=nlevs-3*mdivak                                                S_DPGRAF.129    
      Write(outfmt,fmt='("(",i3,"(e22.15,'',''))")') mremak                S_DPGRAF.130    
                                ! ak                                       S_DPGRAF.131    
      Do ii = 1, mdivak                                                    S_DPGRAF.132    
        kount=3*ii-3                                                       S_DPGRAF.133    
        Write(outunit,fmt='(3(e22.15,'',''))')(ak(kount+jj),jj=1,3)        S_DPGRAF.134    
      enddo                                                                S_DPGRAF.135    
      If (mremak .ne. 0) Write(outunit, fmt=outfmt)                        S_DPGRAF.136    
     &  (ak(jj), jj=3*mdivak+1, nlevs)                                     S_DPGRAF.137    
                                ! bk                                       S_DPGRAF.138    
      Do ii = 1, mdivak                                                    S_DPGRAF.139    
        kount = 3*ii-3                                                     S_DPGRAF.140    
        Write(outunit, fmt='(3(e22.15,'',''))') (bk(kount+jj), jj=1,3)     S_DPGRAF.141    
      enddo                                                                S_DPGRAF.142    
      If (mremak .ne. 0) Write(outunit,fmt=outfmt)                         S_DPGRAF.143    
     &  (bk(jj), jj = 3*mdivak+1, nlevs)                                   S_DPGRAF.144    
                                !                                          S_DPGRAF.145    
      mdivak=(nlevs+1)/3.0                                                 S_DPGRAF.146    
      mremak=(nlevs+1)-3*mdivak                                            S_DPGRAF.147    
      Write(outfmt,fmt='("(",i3,"(e22.15,'',''))")') mremak                S_DPGRAF.148    
                                ! akh                                      S_DPGRAF.149    
      Do ii=1,mdivak                                                       S_DPGRAF.150    
        kount=3*ii-3                                                       S_DPGRAF.151    
        Write(outunit,fmt='(3(e22.15,'',''))')(akh(kount+jj),jj=1,3)       S_DPGRAF.152    
      enddo                                                                S_DPGRAF.153    
      If (mremak .ne. 0) Write(outunit,fmt=outfmt)                         S_DPGRAF.154    
     &  (akh(jj), jj=3*mdivak+1, nlevs+1)                                  S_DPGRAF.155    
                                ! bkh                                      S_DPGRAF.156    
      Do ii=1,mdivak                                                       S_DPGRAF.157    
        kount=3*ii-3                                                       S_DPGRAF.158    
        Write(outunit,fmt='(3(e22.15,'',''))')(bkh(kount+jj),jj=1,3)       S_DPGRAF.159    
      enddo                                                                S_DPGRAF.160    
      If (mremak .ne. 0) Write(outunit,fmt=outfmt)                         S_DPGRAF.161    
     &  (bkh(jj), jj = 3*mdivak+1, nlevs+1)                                S_DPGRAF.162    
                                !                                          S_DPGRAF.163    
                                !                                          S_DPGRAF.164    
      Return                                                               S_DPGRAF.165    
      End                                                                  S_DPGRAF.166    
*ENDIF                                                                     S_DPGRAF.167