*IF DEF,SCMA                                                               S_OBDIAG.2      
C *****************************COPYRIGHT******************************     S_OBDIAG.3      
C (c) CROWN COPYRIGHT 1998, METEOROLOGICAL OFFICE, All Rights Reserved.    S_OBDIAG.4      
C                                                                          S_OBDIAG.5      
C Use, duplication or disclosure of this code is subject to the            S_OBDIAG.6      
C restrictions as set forth in the contract.                               S_OBDIAG.7      
C                                                                          S_OBDIAG.8      
C                Meteorological Office                                     S_OBDIAG.9      
C                London Road                                               S_OBDIAG.10     
C                BRACKNELL                                                 S_OBDIAG.11     
C                Berkshire UK                                              S_OBDIAG.12     
C                RG12 2SZ                                                  S_OBDIAG.13     
C                                                                          S_OBDIAG.14     
C If no contract has been raised with this copy of the code, the use,      S_OBDIAG.15     
C duplication or disclosure of it is strictly prohibited.  Permission      S_OBDIAG.16     
C to do so must first be obtained in writing from the Head of Numerical    S_OBDIAG.17     
C Modelling at the above address.                                          S_OBDIAG.18     
C ******************************COPYRIGHT******************************    S_OBDIAG.19     
C                                                                          S_OBDIAG.20     
C                                                                          S_OBDIAG.21     
C     Subroutine to print out diagnostics from Single Column Model         S_OBDIAG.22     
C     when forcing is provided by GATE observational data                  S_OBDIAG.23     
C     Written by D.Gregory                                                 S_OBDIAG.24     
C                                                                          S_OBDIAG.25     
C     Modification History:                                                S_OBDIAG.26     
C Version  Date                                                            S_OBDIAG.27     
C  4.5     07/98  SCM integrated as a standard UM configuration            S_OBDIAG.28     
C                 JC Thil.                                                 S_OBDIAG.29     
C                                                                          S_OBDIAG.30     

      Subroutine OBS_DUMP(points, dap1, dap2, dap3, dab1, dab2, dab3,       1,45S_OBDIAG.31     
     &  ndim, ndimq, deltap, ti, qi, t_init, q_init, t, q, daycount,       S_OBDIAG.32     
     &  stepcount, timestep, time_string, printo, conv_rain,               S_OBDIAG.33     
     &  conv_snow, ichgf, iwcavg, nout, nout2, nout3)                      S_OBDIAG.34     
C                                                                          S_OBDIAG.35     
      Implicit none                                                        S_OBDIAG.36     
C                                                                          S_OBDIAG.37     
*CALL C_LHEAT                                                              S_OBDIAG.38     
*CALL C_R_CP                                                               S_OBDIAG.39     
*CALL C_G                                                                  S_OBDIAG.40     
C                                                                          S_OBDIAG.41     
      Integer                                                              S_OBDIAG.42     
     &  points, k                                                          S_OBDIAG.43     
     &  ,daycount, stepcount                                               S_OBDIAG.44     
     &  ,ichgf, iwcavg                                                     S_OBDIAG.45     
     &  ,i, ia1, kl, jl                                                    S_OBDIAG.46     
     &  ,ndim, ndimq, nout, nout2, nout3                                   S_OBDIAG.47     
C                                                                          S_OBDIAG.48     
      Real                                                                 S_OBDIAG.49     
     &  dap1(points, 36, ndim)                                             S_OBDIAG.50     
     &  ,dap2(points, 36, ndim)                                            S_OBDIAG.51     
     &  ,dap3(points, 36, 8, ndim)                                         S_OBDIAG.52     
     &  ,dab1(points, 44)                                                  S_OBDIAG.53     
     &  ,dab2(points, 44)                                                  S_OBDIAG.54     
     &  ,dab3(points, 44, 8)                                               S_OBDIAG.55     
c                                                                          S_OBDIAG.56     
c                                                                          S_OBDIAG.57     
      Real                                                                 S_OBDIAG.58     
     &  ti(points, ndim), qi(points, ndimq)                                S_OBDIAG.59     
     &  ,t_init(points, ndim), q_init(points, ndimq)                       S_OBDIAG.60     
     &  ,t(points, ndim), q(points, ndimq)                                 S_OBDIAG.61     
     &  ,deltap(ndim)                                                      S_OBDIAG.62     
     &  ,timestep                                                          S_OBDIAG.63     
     &  ,conv_rain(points), conv_snow(points)                              S_OBDIAG.64     
c                                                                          S_OBDIAG.65     
     &  ,pdel1(ndim), pdel2(ndim)                                          S_OBDIAG.66     
     &  ,ptime1, ptime2, ptime3                                            S_OBDIAG.67     
c                                                                          S_OBDIAG.68     
      Logical printo, spinup                                               S_OBDIAG.69     
c                                                                          S_OBDIAG.70     
      Character*8                                                          S_OBDIAG.71     
     &  time_string                                                        S_OBDIAG.72     
C                                                                          S_OBDIAG.73     
C                                                                          S_OBDIAG.74     
C---------------------------------------------------------------------     S_OBDIAG.75     
C     Form budgets of thermodynamic quantities                             S_OBDIAG.76     
C---------------------------------------------------------------------     S_OBDIAG.77     
C                                                                          S_OBDIAG.78     
      Do k = 1, points                                                     S_OBDIAG.79     
        If (k .gt. 1) Write (nout, *) "Site No ", k                        S_OBDIAG.80     
        Do i = 1, ndim                                                     S_OBDIAG.81     
          pdel1(i) = deltap(i)/(g * 86400.0)                               S_OBDIAG.82     
          pdel2(i) = pdel1(i)/1000.0                                       S_OBDIAG.83     
        enddo                                                              S_OBDIAG.84     
C-----  Thermodynamic profiles                                             S_OBDIAG.85     
        Do i = 1, ndim                                                     S_OBDIAG.86     
          dab1(k, 1) = dab1(k, 1)                                          S_OBDIAG.87     
     &      + Cp * dap1(k, 7, I) * pdel1(I) * 86400.0                      S_OBDIAG.88     
        enddo                                                              S_OBDIAG.89     
        Do i = 1, ndimq                                                    S_OBDIAG.90     
          dab1(k, 2) = dab1(k, 2)                                          S_OBDIAG.91     
     &      + Lc * dap1(k, 8, i) * pdel2(i) * 86400.0                      S_OBDIAG.92     
        enddo                                                              S_OBDIAG.93     
C-----  Sensible heat budget                                               S_OBDIAG.94     
        Do i = 1, ndim                                                     S_OBDIAG.95     
          dab1(k, 3) = dab1(k, 3) + Cp * dap1(k, 10, i) * pdel1(i)         S_OBDIAG.96     
          dab1(k, 4) = dab1(k, 4) + Cp * dap1(k, 11, i) * pdel1(i)         S_OBDIAG.97     
          dab1(k, 5) = dab1(k, 5)                                          S_OBDIAG.98     
     &      + Cp * (dap1(k, 22, i) + dap1(k, 12, i)) * pdel1(i)            S_OBDIAG.99     
          dab1(k, 6) = dab1(k, 6) + Cp * dap1(k, 30, i) * pdel1(i)         S_OBDIAG.100    
          dab1(k, 7) = dab1(k, 7) + Cp * dap1(k, 13, i) * pdel1(i)         S_OBDIAG.101    
          dab1(k, 41) = dab1(k, 41) + Cp * dap1(k, 33, i) * pdel1(i)       S_OBDIAG.102    
          dab1(k, 42) = dab1(k, 42) + Cp * dap1(k, 34, i) * pdel1(i)       S_OBDIAG.103    
          dab1(k, 11) = dab1(k, 11) + Cp * dap1(k, 17, i) * pdel1(i)       S_OBDIAG.104    
          dab1(k, 12) = dab1(k, 12) + Cp * dap1(k, 18, i) * pdel1(i)       S_OBDIAG.105    
        enddo                                                              S_OBDIAG.106    
        Do i = 1, ndimq                                                    S_OBDIAG.107    
          dab1(k, 8) = dab1(k, 8) + Cp * dap1(k, 14, I) * pdel1(I)         S_OBDIAG.108    
          dab1(k, 9) = dab1(k, 9) + Cp * dap1(k, 15, I) * pdel1(I)         S_OBDIAG.109    
          dab1(k, 10) = dab1(k, 10) + Cp * dap1(k, 16, I) * pdel1(I)       S_OBDIAG.110    
          dab1(k, 13) = dab1(k, 13) + Cp * dap1(k, 19, I) * pdel1(I)       S_OBDIAG.111    
        enddo                                                              S_OBDIAG.112    
                                                                           S_OBDIAG.113    
C-----  Latent heat budget                                                 S_OBDIAG.114    
                                                                           S_OBDIAG.115    
        Do i = 1, ndim                                                     S_OBDIAG.116    
          dab1(k, 14) = dab1(k, 14) + Lc * dap1(k, 20, i) * pdel2(i)       S_OBDIAG.117    
          dab1(k, 18) = dab1(k, 18) + Lc * dap1(k, 24, i) * pdel2(i)       S_OBDIAG.118    
          dab1(k, 19) = dab1(k, 19) + Lc * dap1(k, 25, i) * pdel2(i)       S_OBDIAG.119    
          dab1(k, 20) = dab1(k, 20) + Lc * dap1(k, 26, i) * pdel2(i)       S_OBDIAG.120    
          dab1(k, 21) = dab1(k, 21) + Lc * dap1(k, 27, i) * pdel2(i)       S_OBDIAG.121    
        enddo                                                              S_OBDIAG.122    
        Do i = 1, ndimq                                                    S_OBDIAG.123    
          dab1(k, 15) = dab1(k, 15) + Lc * dap1(k, 21, i) * pdel2(i)       S_OBDIAG.124    
          dab1(k, 16) = dab1(k, 16) + Lc * dap1(k, 31, i) * pdel2(i)       S_OBDIAG.125    
          dab1(k, 17) = dab1(k, 17) + Lc * dap1(k, 23, i) * pdel2(i)       S_OBDIAG.126    
          dab1(k, 43) = dab1(k, 43) + Lc * dap1(k, 35, i) * pdel2(i)       S_OBDIAG.127    
          dab1(k, 44) = dab1(k, 44) + Lc * dap1(k, 36, i) * pdel2(i)       S_OBDIAG.128    
          dab1(k, 22) = dab1(k, 22) + Lc * dap1(k, 29, i) * pdel2(i)       S_OBDIAG.129    
        enddo                                                              S_OBDIAG.130    
C-----                                                                     S_OBDIAG.131    
C-----  Budgets of temperature and moisture                                S_OBDIAG.132    
C-----                                                                     S_OBDIAG.133    
        Do i = 1, ndim                                                     S_OBDIAG.134    
          dab1(k, 33) = dab1(k, 33)                                        S_OBDIAG.135    
     &      + t_init(k, i) * Cp * pdel1(i) * 86400.0                       S_OBDIAG.136    
          dab1(k, 35) = dab1(k, 35)                                        S_OBDIAG.137    
     &      + t(k, i) * Cp * pdel2(i) * 86400.0 * 1000.0                   S_OBDIAG.138    
        enddo                                                              S_OBDIAG.139    
        do i = 1, ndimq                                                    S_OBDIAG.140    
          dab1(k, 34) = dab1(k, 34)                                        S_OBDIAG.141    
     &      + q_init(k, i) * Lc * pdel1(i) * 86400.0                       S_OBDIAG.142    
          dab1(k, 36) = dab1(k, 36)                                        S_OBDIAG.143    
     &      + q(k, i) * Lc * pdel2(i) * 86400.0 * 1000.0                   S_OBDIAG.144    
        enddo                                                              S_OBDIAG.145    
C-----                                                                     S_OBDIAG.146    
C-----  Form time derivatives of temperature and moisture                  S_OBDIAG.147    
C-----  and put rain and snow fall in correct units                        S_OBDIAG.148    
C-----                                                                     S_OBDIAG.149    
        dab1(k, 37) = (dab1(k, 35)-dab1(k, 33))/timestep                   S_OBDIAG.150    
        dab1(k, 38) = (dab1(k, 36)-dab1(k, 34))/timestep                   S_OBDIAG.151    
        dab1(k, 23) = dab1(k, 23) + conv_rain(k) * Lc                      S_OBDIAG.152    
        dab1(k, 24) = dab1(k, 24) + conv_snow(k) * (Lc + Lf)               S_OBDIAG.153    
C                                                                          S_OBDIAG.154    
C       Print diagnostics                                                  S_OBDIAG.155    
C                                                                          S_OBDIAG.156    
        If (printo) then                                                   S_OBDIAG.157    
          Write (nout, 2000) daycount, stepcount, time_string              S_OBDIAG.158    
 2000     Format(' Instant budget'/                                        S_OBDIAG.159    
     &      ' day in run = ', i3, ' timestep =  ', i3                      S_OBDIAG.160    
     &      ' actual time = ', a8/                                         S_OBDIAG.161    
     &      ' environmental parameters during call to convection'/)        S_OBDIAG.162    
          Write (nout, 2001)                                               S_OBDIAG.163    
 2001     Format(' K', 4X, 'TE', 8X, 'QE', 6X, 'RHE', 5X, 'QCL',           S_OBDIAG.164    
     &      5X, 'QCF', 5X, 'FR_CL', 5X, 'M_F')                             S_OBDIAG.165    
          Do i = ndim, 1, -1                                               S_OBDIAG.166    
            Write (nout, 2003)                                             S_OBDIAG.167    
     &        i, dap1(k,7, i), dap1(k,8, i), dap1(k,9, i),                 S_OBDIAG.168    
     &        dap1(k,14, i), dap1(k,15, i), dap1(k,16, i),                 S_OBDIAG.169    
     &        dap1(k,1, i)                                                 S_OBDIAG.170    
          enddo                                                            S_OBDIAG.171    
 2003     Format(i3, 1x, f8.2, 2x, f7.2, 1x, f7.2, 1x, f7.2, 1x,           S_OBDIAG.172    
     &      f7.2, 1x, f7.2, 1x, f7.2)                                      S_OBDIAG.173    
          Write (nout, 2004)                                               S_OBDIAG.174    
 2004     Format(/' Sensible heat--profiles'/                              S_OBDIAG.175    
     &      ' units--K/Day'/)                                              S_OBDIAG.176    
          Write (nout, 2005)                                               S_OBDIAG.177    
 2005     Format(' K', 6X, 'LS', 6X, 'RAD_SW', 3X, 'RAD_LW', 4X,           S_OBDIAG.178    
     &      'BL', 7X, 'LSR', 7X, 'LSC', 7X, 'Q1'/)                         S_OBDIAG.179    
          Do i = ndim, 1, -1                                               S_OBDIAG.180    
            Write (nout, 2007)                                             S_OBDIAG.181    
     &        i, dap1(k, 10, i), dap1(k, 12, i), dap1(k, 22, i),           S_OBDIAG.182    
     &        dap1(k, 11, i), dap1(k, 30, i), dap1(k, 19, i),              S_OBDIAG.183    
     &        dap1(k, 13, i)                                               S_OBDIAG.184    
          enddo                                                            S_OBDIAG.185    
 2007     Format(i3, 2x, 7(f7.1, 2x))                                      S_OBDIAG.186    
          Write (nout, 2115)                                               S_OBDIAG.187    
 2115     Format(' K', 6x, ' Q1UD', 7x, 'Q1DD'/)                           S_OBDIAG.188    
          Do  i = ndim, 1, -1                                              S_OBDIAG.189    
            Write (nout, 2117) i, dap1(k, 33, i), dap1(k, 34, i)           S_OBDIAG.190    
          enddo                                                            S_OBDIAG.191    
 2117     Format(i3, 2x, 2(f7.1, 2x))                                      S_OBDIAG.192    
          Write (nout, 2008)                                               S_OBDIAG.193    
 2008     Format(/' Latent heat--profiles'/                                S_OBDIAG.194    
     &      ' units--G/Kg/Day'/)                                           S_OBDIAG.195    
          Write (nout, 2009)                                               S_OBDIAG.196    
 2009     Format(' K', 6X, 'LS', 6X, 'RAD_SW', 3X, 'RAD_LW', 4X,           S_OBDIAG.197    
     &      'BL', 7X, 'LSR', 7X, 'LSC', 7X, 'Q2'/)                         S_OBDIAG.198    
          Do i = ndim, 1, -1                                               S_OBDIAG.199    
            Write (nout, 2011)                                             S_OBDIAG.200    
     &        i, dap1(k, 20, i), dap1(k, 32, i), dap1(k, 32, i),           S_OBDIAG.201    
     &        dap1(k, 21, i), dap1(k, 31, i), -dap1(k, 29, i),             S_OBDIAG.202    
     &        dap1(k, 23, i)                                               S_OBDIAG.203    
          enddo                                                            S_OBDIAG.204    
 2011     Format(i3, 2x, 7(f7.1, 2x))                                      S_OBDIAG.205    
          Write (nout, 2119)                                               S_OBDIAG.206    
 2119     Format(' K', 6X, ' Q2UD', 7X, 'Q2DD'/)                           S_OBDIAG.207    
          Do i = ndim, 1, -1                                               S_OBDIAG.208    
            Write (nout, 2117) i, dap1(k, 35, i), dap1(k, 36, i)           S_OBDIAG.209    
          enddo                                                            S_OBDIAG.210    
C-----                                                                     S_OBDIAG.211    
C-----    Print out budgets                                                S_OBDIAG.212    
C-----                                                                     S_OBDIAG.213    
          Write (nout, 2012)                                               S_OBDIAG.214    
 2012     Format(/' Sensible heat--budget'/                                S_OBDIAG.215    
     &      ' units--W/m * m'//                                            S_OBDIAG.216    
     &      2X, 'TI (J/M * M)', 2X, ' TF (J/M * M)', 3X, 'DT/DT',          S_OBDIAG.217    
     &      6X, 'Q1',                                                      S_OBDIAG.218    
     &      6X, 'RAIN', 5X, 'SNOW', 5X, 'LS', 8X, 'RAD', 5X, 'SURF',       S_OBDIAG.219    
     &      5X, 'LSR', 5X, 'LSC', 6X, 'ERROR')                             S_OBDIAG.220    
          Write (nout, 2013) dab1(k, 33), dab1(k, 35), dab1(k, 37),        S_OBDIAG.221    
     &      dab1(k, 7), dab1(k, 23),                                       S_OBDIAG.222    
     &      dab1(k, 24), dab1(k, 3), dab1(k, 5), dab1(k, 4),               S_OBDIAG.223    
     &      dab1(k, 6), dab1(k, 13),                                       S_OBDIAG.224    
     &      (dab1(k, 37)-dab1(k, 3)-dab1(k, 7)-dab1(k, 4)                  S_OBDIAG.225    
     &      -dab1(k, 5)-dab1(k, 6)-dab1(k, 13))                            S_OBDIAG.226    
 2013     Format(E12.3, 2X, E12.3, 2X, 9(F7.1, 2X)/)                       S_OBDIAG.227    
          Write (nout, 2112)                                               S_OBDIAG.228    
 2112     Format(2X, 'Q1UD', 6X, 'Q1DD')                                   S_OBDIAG.229    
          Write (nout, 2113) dab1(k, 41), dab1(k, 42)                      S_OBDIAG.230    
 2113     Format(2(E12.5, 2X)/)                                            S_OBDIAG.231    
          Write (nout, 2014)                                               S_OBDIAG.232    
 2014     Format(/' Latent heat--budgets'/                                 S_OBDIAG.233    
     &      ' Units--W m^-2 '//                                            S_OBDIAG.234    
     &      2X, 'QI (J m^-2 )', 2X, ' QF (J m^-2 )', 3X, 'DQ/DT',          S_OBDIAG.235    
     &      6X, 'Q2',                                                      S_OBDIAG.236    
     &      6X, 'RAIN', 5X, 'SNOW', 5X, 'LS', 16X, 'SURF', 5X, 'LSR',      S_OBDIAG.237    
     &      5X, 'LSC',                                                     S_OBDIAG.238    
     &      6X, 'ERROR')                                                   S_OBDIAG.239    
          Write (nout, 2015) dab1(k, 34), dab1(k, 36), dab1(k, 38),        S_OBDIAG.240    
     &      dab1(k, 17),                                                   S_OBDIAG.241    
     &      -dab1(k, 23), -dab1(k, 24), dab1(k, 14), dab1(k, 15),          S_OBDIAG.242    
     &      dab1(k, 16), -dab1(k, 22),                                     S_OBDIAG.243    
     &      (dab1(k, 38) + dab1(k, 22)-dab1(k, 14)-dab1(k, 17)             S_OBDIAG.244    
     &      -dab1(k, 16)-dab1(k, 15))                                      S_OBDIAG.245    
 2015     Format(e12.3, 2x, e12.3, 2x, 5(f7.1, 2x), 8x, 3(f7.1, 2x))       S_OBDIAG.246    
          Write (nout, 2114)                                               S_OBDIAG.247    
 2114     Format(2X, 'Q2UD', 6X, 'Q2DD')                                   S_OBDIAG.248    
          Write (nout, 2113) dab1(k, 43), dab1(k, 44)                      S_OBDIAG.249    
        endif                                                              S_OBDIAG.250    
C-----                                                                     S_OBDIAG.251    
                                                                           S_OBDIAG.252    
C-----                                                                     S_OBDIAG.253    
C-----  Put data into longer average arrays                                S_OBDIAG.254    
C-----                                                                     S_OBDIAG.255    
        Do i = 1, 36                                                       S_OBDIAG.256    
          dab2(k, i) = dab2(k, i) + dab1(k, i)                             S_OBDIAG.257    
          Do  ia1 = 1, ndim                                                S_OBDIAG.258    
            dap2(k, i, ia1) = dap2(k, i, ia1) + dap1(k, i, ia1)            S_OBDIAG.259    
          enddo                                                            S_OBDIAG.260    
        enddo                                                              S_OBDIAG.261    
        Do  i = 37, 44                                                     S_OBDIAG.262    
          dab2(k, i) = dab2(k, i) + dab1(k, i)                             S_OBDIAG.263    
        enddo                                                              S_OBDIAG.264    
C                                                                          S_OBDIAG.265    
C                                                                          S_OBDIAG.266    
C-----                                                                     S_OBDIAG.267    
C-----  Complete longer average, and zero arrays                           S_OBDIAG.268    
C-----                                                                     S_OBDIAG.269    
        If (mod((daycount-1) * 86400/int(timestep) + stepcount, ichgf)     S_OBDIAG.270    
     &    .eq. 0                                                           S_OBDIAG.271    
     &    .and. (daycount-1) + (stepcount-1) .gt. 0) then                  S_OBDIAG.272    
C-----                                                                     S_OBDIAG.273    
C-----    Complete average                                                 S_OBDIAG.274    
C-----                                                                     S_OBDIAG.275    
          Do  i = 1, 36                                                    S_OBDIAG.276    
            dab2(k, i) = dab2(k, i)/ichgf                                  S_OBDIAG.277    
            Do  ia1 = 1, ndim                                              S_OBDIAG.278    
              dap2(k, i, ia1) = dap2(k, i, ia1)/ichgf                      S_OBDIAG.279    
            enddo                                                          S_OBDIAG.280    
          enddo                                                            S_OBDIAG.281    
          Do i = 37, 44                                                    S_OBDIAG.282    
            dab2(k, i) = dab2(k, i)/ichgf                                  S_OBDIAG.283    
          enddo                                                            S_OBDIAG.284    
C-----                                                                     S_OBDIAG.285    
C-----                                                                     S_OBDIAG.286    
C-----    Feed longer time average into wave cycle average                 S_OBDIAG.287    
C-----    C                                                                S_OBDIAG.288    
C-----                                                                     S_OBDIAG.289    
C-----                                                                     S_OBDIAG.290    
C-----    Sum profiles                                                     S_OBDIAG.291    
C-----                                                                     S_OBDIAG.292    
          Do kl = 1, ndimq                                                 S_OBDIAG.293    
            dap3(k, 2, iwcavg, kl) = dap3(k, 2, iwcavg, kl) +              S_OBDIAG.294    
     &        dap2(k, 8, kl) - (qi(k, kl) * 1000.0)                        S_OBDIAG.295    
          enddo                                                            S_OBDIAG.296    
          Do kl = 1, ndim                                                  S_OBDIAG.297    
            dap3(k, 1, iwcavg, kl) = dap3(k, 1, iwcavg, kl)                S_OBDIAG.298    
     &        + dap2(k, 7, kl)-ti(k, kl)                                   S_OBDIAG.299    
            dap3(k, 3, iwcavg, kl) = dap3(k, 3, iwcavg, kl)                S_OBDIAG.300    
     &        + dap2(k, 10, kl)                                            S_OBDIAG.301    
            dap3(k, 4, iwcavg, kl) = dap3(k, 4, iwcavg, kl)                S_OBDIAG.302    
     &        + dap2(k, 20, kl)                                            S_OBDIAG.303    
            dap3(k, 5, iwcavg, kl) = dap3(k, 5, iwcavg, kl)                S_OBDIAG.304    
     &        + dap2(k, 12, kl) + dap2(k, 22, kl)                          S_OBDIAG.305    
            dap3(k, 6, iwcavg, kl) = dap3(k, 6, iwcavg, kl)                S_OBDIAG.306    
     &        + dap2(k, 11, kl)                                            S_OBDIAG.307    
            dap3(k, 7, iwcavg, kl) = dap3(k, 7, iwcavg, kl)                S_OBDIAG.308    
     &        + dap2(k, 21, kl)                                            S_OBDIAG.309    
            dap3(k, 8, iwcavg, kl) = dap3(k, 8, iwcavg, kl)                S_OBDIAG.310    
     &        + dap2(k, 13, kl)                                            S_OBDIAG.311    
            dap3(k, 33, iwcavg, kl) = dap3(k, 33, iwcavg, kl)              S_OBDIAG.312    
     &        + dap2(k, 33, kl)                                            S_OBDIAG.313    
            dap3(k, 34, iwcavg, kl) = dap3(k, 34, iwcavg, kl)              S_OBDIAG.314    
     &        + dap2(k, 34, kl)                                            S_OBDIAG.315    
            dap3(k, 9, iwcavg, kl) = dap3(k, 9, iwcavg, kl)                S_OBDIAG.316    
     &        + dap2(k, 23, kl)                                            S_OBDIAG.317    
            dap3(k, 35, iwcavg, kl) = dap3(k, 35, iwcavg, kl)              S_OBDIAG.318    
     &        + dap2(k, 35, kl)                                            S_OBDIAG.319    
            dap3(k, 36, iwcavg, kl) = dap3(k, 36, iwcavg, kl)              S_OBDIAG.320    
     &        + dap2(k, 36, kl)                                            S_OBDIAG.321    
            dap3(k, 10, iwcavg, kl) = dap3(k, 10, iwcavg, kl)              S_OBDIAG.322    
     &        + dap2(k, 14, kl)                                            S_OBDIAG.323    
            dap3(k, 11, iwcavg, kl) = dap3(k, 11, iwcavg, kl)              S_OBDIAG.324    
     &        + dap2(k, 15, kl)                                            S_OBDIAG.325    
            dap3(k, 12, iwcavg, kl) = dap3(k, 12, iwcavg, kl)              S_OBDIAG.326    
     &        + dap2(k, 16, kl)                                            S_OBDIAG.327    
            dap3(k, 13, iwcavg, kl) = dap3(k, 13, iwcavg, kl)              S_OBDIAG.328    
     &        + dap2(k, 19, kl)                                            S_OBDIAG.329    
            dap3(k, 14, iwcavg, kl) = dap3(k, 14, iwcavg, kl)              S_OBDIAG.330    
     &        + dap2(k, 9, kl)                                             S_OBDIAG.331    
            dap3(k, 15, iwcavg, kl) = dap3(k, 15, iwcavg, kl)              S_OBDIAG.332    
     &        + dap2(k, 25, kl) + dap2(k, 26, kl)                          S_OBDIAG.333    
            dap3(k, 16, iwcavg, kl) = dap3(k, 16, iwcavg, kl)              S_OBDIAG.334    
     &        + dap2(k, 27, kl)                                            S_OBDIAG.335    
            dap3(k, 17, iwcavg, kl) = dap3(k, 17, iwcavg, kl)              S_OBDIAG.336    
     &        -dap2(k, 29, kl)                                             S_OBDIAG.337    
            dap3(k, 18, iwcavg, kl) = dap3(k, 18, iwcavg, kl)              S_OBDIAG.338    
     &        + dap2(k, 30, kl)                                            S_OBDIAG.339    
            dap3(k, 19, iwcavg, kl) = dap3(k, 19, iwcavg, kl)              S_OBDIAG.340    
     &        + dap2(k, 31, kl)                                            S_OBDIAG.341    
            dap3(k, 20, iwcavg, kl) = dap3(k, 20, iwcavg, kl)              S_OBDIAG.342    
     &        + dap2(k, 1, kl)                                             S_OBDIAG.343    
          enddo                                                            S_OBDIAG.344    
                                                                           S_OBDIAG.345    
c-----                                                                     S_OBDIAG.346    
C-----    Sum budgets                                                      S_OBDIAG.347    
C-----                                                                     S_OBDIAG.348    
          dab3(k, 1, iwcavg) = dab3(k, 1, iwcavg) + dab2(k, 1)             S_OBDIAG.349    
          dab3(k, 2, iwcavg) = dab3(k, 2, iwcavg) + dab2(k, 2)             S_OBDIAG.350    
          dab3(k, 3, iwcavg) = dab3(k, 3, iwcavg) + dab2(k, 3)             S_OBDIAG.351    
          dab3(k, 4, iwcavg) = dab3(k, 4, iwcavg) + dab2(k, 14)            S_OBDIAG.352    
          dab3(k, 5, iwcavg) = dab3(k, 5, iwcavg) + dab2(k, 5)             S_OBDIAG.353    
          dab3(k, 6, iwcavg) = dab3(k, 6, iwcavg) + dab2(k, 4)             S_OBDIAG.354    
          dab3(k, 7, iwcavg) = dab3(k, 7, iwcavg) + dab2(k, 15)            S_OBDIAG.355    
          dab3(k, 8, iwcavg) = dab3(k, 8, iwcavg) + dab2(k, 7)             S_OBDIAG.356    
          dab3(k, 41, iwcavg) = dab3(k, 41, iwcavg) + dab2(k, 41)          S_OBDIAG.357    
          dab3(k, 42, iwcavg) = dab3(k, 42, iwcavg) + dab2(k, 42)          S_OBDIAG.358    
          dab3(k, 9, iwcavg) = dab3(k, 9, iwcavg) + dab2(k, 17)            S_OBDIAG.359    
          dab3(k, 43, iwcavg) = dab3(k, 43, iwcavg) + dab2(k, 43)          S_OBDIAG.360    
          dab3(k, 44, iwcavg) = dab3(k, 44, iwcavg) + dab2(k, 44)          S_OBDIAG.361    
          dab3(k, 10, iwcavg) = dab3(k, 10, iwcavg) + dab2(k, 8)           S_OBDIAG.362    
          dab3(k, 11, iwcavg) = dab3(k, 11, iwcavg) + dab2(k, 9)           S_OBDIAG.363    
     &      + dab2(k, 10)                                                  S_OBDIAG.364    
          dab3(k, 12, iwcavg) = dab3(k, 12, iwcavg) + dab2(k, 11)          S_OBDIAG.365    
          dab3(k, 13, iwcavg) = dab3(k, 13, iwcavg) + dab2(k, 13)          S_OBDIAG.366    
          dab3(k, 14, iwcavg) = dab3(k, 14, iwcavg) + dab2(k, 18)          S_OBDIAG.367    
          dab3(k, 15, iwcavg) = dab3(k, 15, iwcavg) + dab2(k, 19)          S_OBDIAG.368    
     &      + dab2(k, 20)                                                  S_OBDIAG.369    
          dab3(k, 16, iwcavg) = dab3(k, 16, iwcavg) + dab2(k, 21)          S_OBDIAG.370    
          dab3(k, 17, iwcavg) = dab3(k, 17, iwcavg)-dab2(k, 22)            S_OBDIAG.371    
          dab3(k, 18, iwcavg) = dab3(k, 18, iwcavg) + dab2(k, 6)           S_OBDIAG.372    
          dab3(k, 19, iwcavg) = dab3(k, 19, iwcavg) + dab2(k, 16)          S_OBDIAG.373    
                                                                           S_OBDIAG.374    
C-----                                                                     S_OBDIAG.375    
C-----                                                                     S_OBDIAG.376    
C-----    If simulation time less than spinup print                        S_OBDIAG.377    
C-----    write out averages and zero arrays                               S_OBDIAG.378    
C-----    first two wave cycles are taken as spin-up                       S_OBDIAG.379    
C-----    each printed out separately                                      S_OBDIAG.380    
C-----                                                                     S_OBDIAG.381    
C-----                                                                     S_OBDIAG.382    
          If ((daycount-1) * 86400 / int(timestep + stepcount)             S_OBDIAG.383    
     &      .eq. 8 * ichgf) then                                           S_OBDIAG.384    
            spinup = .true.                                                S_OBDIAG.385    
          elseif ((daycount-1) * 86400 / int(timestep + stepcount)         S_OBDIAG.386    
     &        .eq. 16 * ichgf)  then                                       S_OBDIAG.387    
            spinup = .true.                                                S_OBDIAG.388    
          else                                                             S_OBDIAG.389    
            spinup = .false.                                               S_OBDIAG.390    
          endif                                                            S_OBDIAG.391    
                                                                           S_OBDIAG.392    
          If (spinup) then                                                 S_OBDIAG.393    
C-----                                                                     S_OBDIAG.394    
C-----                                                                     S_OBDIAG.395    
C-----      Write out wave cycle averages                                  S_OBDIAG.396    
C-----      table1----writes out tables of profiles                        S_OBDIAG.397    
C-----      table2----writes out tables of budgets                         S_OBDIAG.398    
C-----                                                                     S_OBDIAG.399    
C-----                                                                     S_OBDIAG.400    
            Call TABLE1('Temperature profile deviation(K/Day)',            S_OBDIAG.401    
     &        dap3, 1, ndim, nout2)                                        S_OBDIAG.402    
            Call TABLE1('LS temperature advection(K/Day)', dap3, 3,        S_OBDIAG.403    
     &        ndim, nout2)                                                 S_OBDIAG.404    
            Call TABLE1('Relative humidity', dap3, 14, ndim, nout2)        S_OBDIAG.405    
            Call TABLE1('Radiation(K/Day)', dap3, 5, ndim, nout2)          S_OBDIAG.406    
            Call TABLE1('Boundary layer-sensible heat(K/Day)', dap3,       S_OBDIAG.407    
     &        6, ndim, nout2)                                              S_OBDIAG.408    
            Call TABLE1('Large scale rain-latent heating(K/Day)',          S_OBDIAG.409    
     &        dap3, 18, ndim, nout2)                                       S_OBDIAG.410    
            Call TABLE1('Q1 = apparent heat source(K/Day)', dap3, 8,       S_OBDIAG.411    
     &        ndim, nout2)                                                 S_OBDIAG.412    
            Call TABLE1('Q1UD = apparent heat source(K/Day)', dap3,        S_OBDIAG.413    
     &        33, ndim, nout2)                                             S_OBDIAG.414    
            Call TABLE1('Q1DD = apparent heat source(K/Day)', dap3,        S_OBDIAG.415    
     &        34, ndim, nout2)                                             S_OBDIAG.416    
            Call TABLE1('Large scale cloud (K/Day)', dap3,                 S_OBDIAG.417    
     &        13, ndim, nout2)                                             S_OBDIAG.418    
            Do  JL = 1, 8                                                  S_OBDIAG.419    
              Do  KL = 1, NDIM                                             S_OBDIAG.420    
                dap3(k, 8, JL, KL) = dap3(k, 8, JL, KL)                    S_OBDIAG.421    
     &            + dap3(k, 6, JL, KL) + dap3(k, 18, JL, KL)               S_OBDIAG.422    
     &            + dap3(k, 13, JL, KL)                                    S_OBDIAG.423    
              enddo                                                        S_OBDIAG.424    
            enddo                                                          S_OBDIAG.425    
            Call TABLE1('Q1 + BL + LSR + LSC (K/Day)', dap3,               S_OBDIAG.426    
     &        8, ndim, nout2)                                              S_OBDIAG.427    
            Call TABLE1('Mixing ratio profile deviation(G/Kg/Day)',        S_OBDIAG.428    
     &        dap3, 2, ndim, nout2)                                        S_OBDIAG.429    
            Call TABLE1('LS moisture advection(K/Day)', dap3, 4,           S_OBDIAG.430    
     &        ndim, nout2)                                                 S_OBDIAG.431    
            Call TABLE1('Boundary layer-latent heat(K/Day)', dap3, 7,      S_OBDIAG.432    
     &        ndim, nout2)                                                 S_OBDIAG.433    
            Call TABLE1('Large-scale rain-moisture(K/Day)', dap3, 19,      S_OBDIAG.434    
     &        ndim, nout2)                                                 S_OBDIAG.435    
            Call TABLE1('Q2 = Apparent moisture source(K/Day)', dap3,      S_OBDIAG.436    
     &        9, ndim, nout2)                                              S_OBDIAG.437    
            Call TABLE1('Q2UD = Apparent moisture source(K/Day)',          S_OBDIAG.438    
     &        dap3, 35, ndim, nout2)                                       S_OBDIAG.439    
            Call TABLE1('Q2DD = Apparent moisture source(K/Day)',          S_OBDIAG.440    
     &        dap3, 36, ndim, nout2)                                       S_OBDIAG.441    
            Call TABLE1('Large scale cloud (K/Day)', dap3,                 S_OBDIAG.442    
     &        17, ndim, nout2)                                             S_OBDIAG.443    
            Do  jl = 1, 8                                                  S_OBDIAG.444    
              Do kl = 1, ndim                                              S_OBDIAG.445    
                dap3(k, 9, jl, kl) = dap3(k, 9, jl, kl)                    S_OBDIAG.446    
     &            + dap3(k, 7, jl, kl) + dap3(k, 19, jl, kl)               S_OBDIAG.447    
     &            + dap3(k, 17, jl, kl)                                    S_OBDIAG.448    
              enddo                                                        S_OBDIAG.449    
            enddo                                                          S_OBDIAG.450    
            Call TABLE1('Q2 + BL + LSR + LSC (K/Day)', dap3,               S_OBDIAG.451    
     &        9, ndim, nout2)                                              S_OBDIAG.452    
            Call TABLE1('Cloud water (g/Kg)', dap3, 10, ndim, nout2)       S_OBDIAG.453    
            Call TABLE1('Cloud ice (g/Kg)', dap3, 11, ndim, nout2)         S_OBDIAG.454    
            Call TABLE1('Fractional cloud amount', dap3,                   S_OBDIAG.455    
     &        12, ndim, nout2)                                             S_OBDIAG.456    
            Call TABLE1('Mass_flux', dap3, 20, ndim, nout2)                S_OBDIAG.457    
                                                                           S_OBDIAG.458    
            Call HEAD2('Sensible heat budgets-J/m^2 or W/m^2', nout2)      S_OBDIAG.459    
            Call TAB21('Temp', dab3, 1, nout2)                             S_OBDIAG.460    
            Call TAB22('ADVF', dab3, 3, nout2)                             S_OBDIAG.461    
            Call TAB22('RAD', dab3, 5, nout2)                              S_OBDIAG.462    
            Call TAB22('BL', dab3, 6, nout2)                               S_OBDIAG.463    
            Call TAB22('LSR', dab3, 18, nout2)                             S_OBDIAG.464    
            Call TAB22('Q1', dab3, 8, nout2)                               S_OBDIAG.465    
            Call TAB21('Q1UD', dab3, 41, nout2)                            S_OBDIAG.466    
            Call TAB21('Q1DD', dab3, 42, nout2)                            S_OBDIAG.467    
            Call TAB22('LSC', dab3, 13, nout2)                             S_OBDIAG.468    
            Do jl = 1, 8                                                   S_OBDIAG.469    
              dab3(k, 8, jl) = dab3(k, 8, jl) + dab3(k, 6, jl)             S_OBDIAG.470    
     &          + dab3(k, 18, jl) + dab3(k, 13, jl)                        S_OBDIAG.471    
            enddo                                                          S_OBDIAG.472    
            Call TAB22('SUMQ1', dab3, 8, nout2)                            S_OBDIAG.473    
                                                                           S_OBDIAG.474    
            Call HEAD2('Latent heat budget-J/m^2 OR W/m^2', nout2)         S_OBDIAG.475    
            Call TAB21('MIXR', dab3, 2, nout2)                             S_OBDIAG.476    
            Call TAB22('ADVF', dab3, 4, nout2)                             S_OBDIAG.477    
            Call TAB22('BL', dab3, 7, nout2)                               S_OBDIAG.478    
            Call TAB22('LSR', dab3, 19, nout2)                             S_OBDIAG.479    
            Call TAB22('Q2', dab3, 9, nout2)                               S_OBDIAG.480    
            Call TAB21('Q2UD', dab3, 43, nout2)                            S_OBDIAG.481    
            Call TAB21('Q2DD', dab3, 44, nout2)                            S_OBDIAG.482    
            Call TAB22('LSC', dab3, 17, nout2)                             S_OBDIAG.483    
            Do  jl = 1, 8                                                  S_OBDIAG.484    
              dab3(k, 9, jl) = dab3(k, 9, jl) + dab3(k, 7, jl)             S_OBDIAG.485    
     &          + dab3(k, 19, jl)-dab3(k, 17, jl)                          S_OBDIAG.486    
            enddo                                                          S_OBDIAG.487    
            Call TAB22('SUMQ2', dab3, 9, nout2)                            S_OBDIAG.488    
                                                                           S_OBDIAG.489    
            Do i = 1, 36                                                   S_OBDIAG.490    
              Do  jl = 1, 8                                                S_OBDIAG.491    
                dab3(k, i, jl) = 0.0                                       S_OBDIAG.492    
                Do kl = 1, ndim                                            S_OBDIAG.493    
                  dap3(k, i, jl, kl) = 0.0                                 S_OBDIAG.494    
                enddo                                                      S_OBDIAG.495    
              enddo                                                        S_OBDIAG.496    
            enddo                                                          S_OBDIAG.497    
                                                                           S_OBDIAG.498    
            Do i = 37, 44                                                  S_OBDIAG.499    
              Do  jl = 1, 8                                                S_OBDIAG.500    
                dab3(k, i, jl) = 0.0                                       S_OBDIAG.501    
              enddo                                                        S_OBDIAG.502    
            enddo                                                          S_OBDIAG.503    
                                                                           S_OBDIAG.504    
          endif                                                            S_OBDIAG.505    
                                                                           S_OBDIAG.506    
C-----                                                                     S_OBDIAG.507    
C-----    Print out results                                                S_OBDIAG.508    
C-----                                                                     S_OBDIAG.509    
          ptime1 = float((daycount-1) * 24)                                S_OBDIAG.510    
     &       + (float(stepcount) * timestep/3600.0)                        S_OBDIAG.511    
          ptime2 = float(ichgf) * timestep/3600.0                          S_OBDIAG.512    
          ptime3 = ptime1 - ptime2                                         S_OBDIAG.513    
          Write (nout3, 2040) ptime2, ptime3, ptime1                       S_OBDIAG.514    
 2040     Format(//' Average over previous ', f8.2, ' hours'/              S_OBDIAG.515    
     &      ' hour ', f8.2, ' to hour ', f8.2//                            S_OBDIAG.516    
     &      ' cloud and environment parameters'/                           S_OBDIAG.517    
     &      ' during call to convection routine'/)                         S_OBDIAG.518    
          Write (nout3, 2001)                                              S_OBDIAG.519    
          Do i = ndim, 1, -1                                               S_OBDIAG.520    
            Write (nout3, 2003)i, dap2(k, 7, i), dap2(k, 8, i),            S_OBDIAG.521    
     &        dap2(k, 9, i), dap2(k, 14, i),                               S_OBDIAG.522    
     &        dap2(k, 15, i), dap2(k, 16, i), dap2(k, 1, i)                S_OBDIAG.523    
          enddo                                                            S_OBDIAG.524    
          Write (nout3, 2004)                                              S_OBDIAG.525    
          Write (nout3, 2005)                                              S_OBDIAG.526    
          Do i = ndim, 1, -1                                               S_OBDIAG.527    
            Write (nout3, 2007)i, dap2(k, 10, i), dap2(k, 12, i),          S_OBDIAG.528    
     &        dap2(k, 22, i),                                              S_OBDIAG.529    
     &        dap2(k, 11, i), dap2(k, 30, i), dap2(k, 19, i),              S_OBDIAG.530    
     &        dap2(k, 13, i)                                               S_OBDIAG.531    
          enddo                                                            S_OBDIAG.532    
          Write (nout3, 2115)                                              S_OBDIAG.533    
          Do  i = ndim, 1, -1                                              S_OBDIAG.534    
            Write (nout3, 2117)i, dap2(k, 33, i), dap2(k, 34, i)           S_OBDIAG.535    
          enddo                                                            S_OBDIAG.536    
          Write (nout3, 2008)                                              S_OBDIAG.537    
          Write (nout3, 2009)                                              S_OBDIAG.538    
          Do i = ndim, 1, -1                                               S_OBDIAG.539    
            Write (nout3, 2011) i, dap2(k, 20, i), dap2(k, 32, i),         S_OBDIAG.540    
     &        dap2(k, 32, i),                                              S_OBDIAG.541    
     &        dap2(k, 21, i), dap2(k, 31, i), -dap2(k, 29, i),             S_OBDIAG.542    
     &        dap2(k, 23, i)                                               S_OBDIAG.543    
          enddo                                                            S_OBDIAG.544    
          Write (nout3, 2119)                                              S_OBDIAG.545    
          Do i = ndim, 1, -1                                               S_OBDIAG.546    
            Write (nout3, 2117)i, dap2(k, 35, i), dap2(k, 36, i)           S_OBDIAG.547    
          enddo                                                            S_OBDIAG.548    
C-----                                                                     S_OBDIAG.549    
C-----    Print out budgets                                                S_OBDIAG.550    
C-----                                                                     S_OBDIAG.551    
          Write (nout3, 2012)                                              S_OBDIAG.552    
          Write (nout3, 2013)dab2(k, 33), dab2(k, 35), dab2(k, 37),        S_OBDIAG.553    
     &      dab2(k, 7), dab2(k, 23),                                       S_OBDIAG.554    
     &      dab2(k, 24), dab2(k, 3), dab2(k, 5), dab2(k, 4),               S_OBDIAG.555    
     &      dab2(k, 6), dab2(k, 13),                                       S_OBDIAG.556    
     &      (dab2(k, 37) - dab2(k, 3) - dab2(k, 7) - dab2(k, 4)            S_OBDIAG.557    
     &      - dab2(k, 5) - dab2(k, 6) - dab2(k, 13))                       S_OBDIAG.558    
          Write (nout3, 2112)                                              S_OBDIAG.559    
          Write (nout3, 2113) dab2(k, 41), dab2(k, 42)                     S_OBDIAG.560    
          Write (nout3, 2014)                                              S_OBDIAG.561    
          Write (nout3, 2015) dab2(k, 34), dab2(k, 36), dab2(k, 38),       S_OBDIAG.562    
     &      dab2(k, 17),  -dab2(k, 23), -dab2(k, 24), dab2(k, 14),         S_OBDIAG.563    
     &      dab2(k, 15), dab2(k, 16), -dab2(k, 22),                        S_OBDIAG.564    
     &      (dab2(k, 38) - dab2(k, 14) - dab2(k, 17) - dab2(k, 15)         S_OBDIAG.565    
     &      - dab2(k, 16) + dab2(k, 22))                                   S_OBDIAG.566    
          Write (nout3, 2114)                                              S_OBDIAG.567    
          Write (nout3, 2113) dab2(k, 43), dab2(k, 44)                     S_OBDIAG.568    
C-----                                                                     S_OBDIAG.569    
C-----    Printout complete-zero longer diagnostic arrays                  S_OBDIAG.570    
C-----                                                                     S_OBDIAG.571    
          Do i = 1, 36                                                     S_OBDIAG.572    
            dab2(k, i) = 0.0                                               S_OBDIAG.573    
            Do ia1 = 1, ndim                                               S_OBDIAG.574    
              dap2(k, i, ia1) = 0.0                                        S_OBDIAG.575    
            enddo                                                          S_OBDIAG.576    
          enddo                                                            S_OBDIAG.577    
          Do i = 37, 44                                                    S_OBDIAG.578    
            dab2(k, i) = 0.0                                               S_OBDIAG.579    
          enddo                                                            S_OBDIAG.580    
        endif                                                              S_OBDIAG.581    
C                                                                          S_OBDIAG.582    
      enddo                     ! k                                        S_OBDIAG.583    
                                                                           S_OBDIAG.584    
      Return                                                               S_OBDIAG.585    
      End ! Subroutine OBS_DUMP                                            S_OBDIAG.586    
C                                                                          S_OBDIAG.587    
                                                                           S_OBDIAG.588    

      Subroutine TABLE1(char1, para, nu, nl, nout)                          48,1S_OBDIAG.589    
C-----                                                                     S_OBDIAG.590    
C-----To printout a table of array para                                    S_OBDIAG.591    
C-----with the title char1                                                 S_OBDIAG.592    
C-----                                                                     S_OBDIAG.593    
      Integer nout                                                         S_OBDIAG.594    
      Integer nu, nl, k, i                                                 S_OBDIAG.595    
      Real para, avg                                                       S_OBDIAG.596    
                                                                           S_OBDIAG.597    
      Dimension para(36, 8, nl)                                            S_OBDIAG.598    
      Character*(*) char1                                                  S_OBDIAG.599    
                                                                           S_OBDIAG.600    
      Write (nout,  *) char1                                               S_OBDIAG.601    
                                                                           S_OBDIAG.602    
      Call HEAD1(nout)                                                     S_OBDIAG.603    
                                                                           S_OBDIAG.604    
      Do k = nl, 1, -1                                                     S_OBDIAG.605    
        avg = 0.0                                                          S_OBDIAG.606    
        Do i = 1, 8                                                        S_OBDIAG.607    
          avg = avg + para(nu, i, k) / 8.0                                 S_OBDIAG.608    
        enddo                                                              S_OBDIAG.609    
        Write (nout, 300) k, (para(nu, i, k), i = 1, 8), avg               S_OBDIAG.610    
      enddo                                                                S_OBDIAG.611    
 300  Format(5X, I2, 3X, 9(F8.2, 2X))                                      S_OBDIAG.612    
                                                                           S_OBDIAG.613    
      Write (nout, 400)                                                    S_OBDIAG.614    
 400  Format(////)                                                         S_OBDIAG.615    
                                                                           S_OBDIAG.616    
      Return                                                               S_OBDIAG.617    
      End ! Subroutine TABLE1                                              S_OBDIAG.618    
                                                                           S_OBDIAG.619    

      Subroutine HEAD1(nout)                                                1S_OBDIAG.620    
C-----                                                                     S_OBDIAG.621    
C-----To print header for table1                                           S_OBDIAG.622    
c-----                                                                     S_OBDIAG.623    
      Integer nout, i                                                      S_OBDIAG.624    
C                                                                          S_OBDIAG.625    
      Write (nout, 100)                                                    S_OBDIAG.626    
 100  Format(3x, 'level', 17x, 'wave category')                            S_OBDIAG.627    
      Write (nout, 200)(i, i = 1, 8)                                       S_OBDIAG.628    
 200  Format(10x, 8(4x, i1, 5x), 3x, 'mean', 3x)                           S_OBDIAG.629    
                                                                           S_OBDIAG.630    
      Return                                                               S_OBDIAG.631    
      End ! Subroutine HEAD1                                               S_OBDIAG.632    
                                                                           S_OBDIAG.633    

      Subroutine HEAD2(chara, nout)                                         4S_OBDIAG.634    
C-----                                                                     S_OBDIAG.635    
C-----To printout header for a table                                       S_OBDIAG.636    
C-----                                                                     S_OBDIAG.637    
      Integer nout                                                         S_OBDIAG.638    
      Integer i                                                            S_OBDIAG.639    
      Character chara*(*), char70*70                                       S_OBDIAG.640    
C     To prevent 'rubbish' filling up the remaining spaces in the          S_OBDIAG.641    
C     variable CHARA                                                       S_OBDIAG.642    
      char70 = chara                                                       S_OBDIAG.643    
      Write (nout, 100) char70                                             S_OBDIAG.644    
 100  Format(10x, a70)                                                     S_OBDIAG.645    
      Write (nout, 200) (i, i = 1, 8)                                      S_OBDIAG.646    
 200  Format(1x, 'Quantity', 18x, 'wave category'/                         S_OBDIAG.647    
     &  10x, 8(7x, i1, 7x), 5x, 'mean', 6x/)                               S_OBDIAG.648    
                                                                           S_OBDIAG.649    
      Return                                                               S_OBDIAG.650    
      End                       ! Subroutine HEAD2                         S_OBDIAG.651    
                                                                           S_OBDIAG.652    

      Subroutine TAB21(chara, para, nu, nout)                               8S_OBDIAG.653    
C-----                                                                     S_OBDIAG.654    
C-----To printout a line of a table                                        S_OBDIAG.655    
C-----exponential form e12.6 used                                          S_OBDIAG.656    
C-----                                                                     S_OBDIAG.657    
      Integer nout                                                         S_OBDIAG.658    
      Integer nu, i                                                        S_OBDIAG.659    
      Real para, avg                                                       S_OBDIAG.660    
      Dimension para(44, 8)                                                S_OBDIAG.661    
      Character*(*) chara                                                  S_OBDIAG.662    
      Character*9 char9                                                    S_OBDIAG.663    
      char9 = chara                                                        S_OBDIAG.664    
      avg = 0.0                                                            S_OBDIAG.665    
      Do i = 1, 8                                                          S_OBDIAG.666    
        avg = avg + para(nu, i) / 8.0                                      S_OBDIAG.667    
      enddo                                                                S_OBDIAG.668    
      Write (nout, 100) char9, (para(nu, i), i = 1, 8), avg                S_OBDIAG.669    
 100  Format(1x, a9, 9(e12.6, 3x)/)                                        S_OBDIAG.670    
                                                                           S_OBDIAG.671    
      Return                                                               S_OBDIAG.672    
      End                       ! Subroutine TAB21                         S_OBDIAG.673    
                                                                           S_OBDIAG.674    

      Subroutine TAB22(chara, para, nu, nout)                               30S_OBDIAG.675    
C-----                                                                     S_OBDIAG.676    
C-----To print a line of a table                                           S_OBDIAG.677    
C-----real form f8.2 used                                                  S_OBDIAG.678    
C-----                                                                     S_OBDIAG.679    
      Integer nout                                                         S_OBDIAG.680    
      Integer nu, i                                                        S_OBDIAG.681    
      Real para, avg                                                       S_OBDIAG.682    
      Dimension para(44, 8)                                                S_OBDIAG.683    
      Character*(*) chara                                                  S_OBDIAG.684    
      Character*9 char9                                                    S_OBDIAG.685    
      char9 = chara                                                        S_OBDIAG.686    
      avg = 0.0                                                            S_OBDIAG.687    
      do i = 1, 8                                                          S_OBDIAG.688    
        avg = avg + para(nu, i)/8.0                                        S_OBDIAG.689    
      enddo                                                                S_OBDIAG.690    
      Write (nout, 100)char9, (para(nu, i), i = 1, 8), avg                 S_OBDIAG.691    
 100  Format(1x, a9, 9(3x, f8.2, 4x)/)                                     S_OBDIAG.692    
                                                                           S_OBDIAG.693    
      Return                                                               S_OBDIAG.694    
      End                       ! Subroutine TAB22                         S_OBDIAG.695    
                                                                           S_OBDIAG.696    

      Subroutine OBS_DUMP_FINAL(points, dap3, dab3, ndim, ndimq,            1,45S_OBDIAG.697    
     &  daycount, stepcount, timestep, ichgf, t, q, u, v, smvc,            S_OBDIAG.698    
     &  snodep, tstar, nout, nout2)                                        S_OBDIAG.699    
C                                                                          S_OBDIAG.700    
C                                                                          S_OBDIAG.701    
C     Subroutine to print out final diagnostics from Single Column         S_OBDIAG.702    
C     Model when forcing is provided by GATE observational data            S_OBDIAG.703    
C                                                                          S_OBDIAG.704    
      Implicit none                                                        S_OBDIAG.705    
C                                                                          S_OBDIAG.706    
C                                                                          S_OBDIAG.707    
C                                                                          S_OBDIAG.708    
      Integer                                                              S_OBDIAG.709    
     &  daycount, stepcount, ichgf                                         S_OBDIAG.710    
     &  ,i, il, jl, kl, itotwc                                             S_OBDIAG.711    
     &  ,points,ndim, ndimq, nout, nout2                                   S_OBDIAG.712    
C                                                                          S_OBDIAG.713    
      Real                                                                 S_OBDIAG.714    
     &  dap3(points, 36, 8, ndim)                                          S_OBDIAG.715    
     &  ,dab3(points, 44, 8)                                               S_OBDIAG.716    
     &  ,smvc(points), snodep(points), tstar(points)                       S_OBDIAG.717    
     &  ,t(points, ndim), q(points, ndimq)                                 S_OBDIAG.718    
     &  ,u(points, ndim), v(points, ndim)                                  S_OBDIAG.719    
     &  ,timestep                                                          S_OBDIAG.720    
C                                                                          S_OBDIAG.721    
      Integer k                                                            S_OBDIAG.722    
C                                                                          S_OBDIAG.723    
C                                                                          S_OBDIAG.724    
C     Print out final profiles                                             S_OBDIAG.725    
C                                                                          S_OBDIAG.726    
      Do k = 1, points                                                     S_OBDIAG.727    
        Write (nout, 308)                                                  S_OBDIAG.728    
     &    (daycount-1) * 86400 / int(timestep) + stepcount,                S_OBDIAG.729    
     &    timestep                                                         S_OBDIAG.730    
        Write (nout, 302) smvc(k), snodep(k), tstar(k),                    S_OBDIAG.731    
     &    (t(k, i), i = 1, 10), (q(k, i), i = 1, 10),                      S_OBDIAG.732    
     &    (u(k, i), i = 1, 10), (v(k, i), i = 1, 10),                      S_OBDIAG.733    
     &    (t(k, i), i = 11, ndim), (q(k, i), i = 11, ndimq),               S_OBDIAG.734    
     &    (u(k, i), i = 11, ndim), (v(k, i), i = 11, ndim)                 S_OBDIAG.735    
 308    Format('0After', i7, ' timesteps of ', f8.1,                       S_OBDIAG.736    
     &    ' secs, the final profiles are -')                               S_OBDIAG.737    
 302    Format(                                                            S_OBDIAG.738    
     &    '0Smvc = ', f15.7, 7x,                                           S_OBDIAG.739    
     &    'snodep = ', f15.7, 7x,                                          S_OBDIAG.740    
     &    'Tstar = ', f6.2/                                                S_OBDIAG.741    
     &    ' t =  ', 10f9.2/' q =  ', 10f9.6/                               S_OBDIAG.742    
     &    ' u =  ', 10f9.2/' v =  ', 10f9.2/                               S_OBDIAG.743    
     &    ' t =  ', 10f9.2/' q =  ', 10f9.6/                               S_OBDIAG.744    
     &    ' u =  ', 10f9.2/' v =  ', 10f9.2/)                              S_OBDIAG.745    
C-----                                                                     S_OBDIAG.746    
C-----                                                                     S_OBDIAG.747    
C-----  Average wave cycle averages                                        S_OBDIAG.748    
C-----                                                                     S_OBDIAG.749    
C-----                                                                     S_OBDIAG.750    
        itotwc = ((daycount-1) * 86400/int(timestep) + stepcount)          S_OBDIAG.751    
     &    / (ichgf * 8)                                                    S_OBDIAG.752    
        itotwc = itotwc-2                                                  S_OBDIAG.753    
        If (itotwc .le. 0) itotwc = 1                                      S_OBDIAG.754    
        Do  IL = 1, 36                                                     S_OBDIAG.755    
          Do  JL = 1, 8                                                    S_OBDIAG.756    
            dab3(k, il, jl) = dab3(k, il, jl)/float(itotwc)                S_OBDIAG.757    
            Do  kl = 1, ndim                                               S_OBDIAG.758    
              dap3(k, il, jl, kl) = dap3(k, il, jl, kl)/float(itotwc)      S_OBDIAG.759    
            enddo                                                          S_OBDIAG.760    
          enddo                                                            S_OBDIAG.761    
        enddo                                                              S_OBDIAG.762    
        Do il = 37, 44                                                     S_OBDIAG.763    
          Do jl = 1, 8                                                     S_OBDIAG.764    
            dab3(k, il, jl) = dab3(k, il, jl) / float(itotwc)              S_OBDIAG.765    
          enddo                                                            S_OBDIAG.766    
        enddo                                                              S_OBDIAG.767    
C-----                                                                     S_OBDIAG.768    
C-----                                                                     S_OBDIAG.769    
C-----  Write out wave cycle averages                                      S_OBDIAG.770    
C-----  Table1----writes out tables of profiles                            S_OBDIAG.771    
C-----  table2----writes out tables of budgets                             S_OBDIAG.772    
C-----                                                                     S_OBDIAG.773    
C-----                                                                     S_OBDIAG.774    
        Call TABLE1('Temperature deviation(K)', dap3, 1, ndim, nout2)      S_OBDIAG.775    
        Call TABLE1('LS temperature advection(K Day^-1)', dap3,            S_OBDIAG.776    
     &    3, ndim, nout2)                                                  S_OBDIAG.777    
        Call TABLE1('Relative humidity', dap3, 14, ndim, nout2)            S_OBDIAG.778    
        Call TABLE1('Radiation(K Day^-1)', dap3, 5, ndim, nout2)           S_OBDIAG.779    
        Call TABLE1('Boundary layer-sensible heat(K Day^-1)', dap3,        S_OBDIAG.780    
     &    6, ndim, nout2)                                                  S_OBDIAG.781    
        Call TABLE1('Large scale rain-latent heating(K Day^-1)',           S_OBDIAG.782    
     &    dap3, 18, ndim, nout2)                                           S_OBDIAG.783    
        Call TABLE1('Q1 = Apparent heat source(K Day^-1)', dap3,           S_OBDIAG.784    
     &    8, ndim, nout2)                                                  S_OBDIAG.785    
        Call TABLE1('Q1UD = Apparent heat source(K Day^-1)', dap3,         S_OBDIAG.786    
     &    33, ndim, nout2)                                                 S_OBDIAG.787    
        Call TABLE1('Q1DD = Apparent heat source(K Day^-1)', dap3,         S_OBDIAG.788    
     &    34, ndim ,nout2)                                                 S_OBDIAG.789    
        Call TABLE1('Large scale cloud(K Day^-1)', dap3,                   S_OBDIAG.790    
     &    13, ndim, nout2)                                                 S_OBDIAG.791    
        Do jl = 1, 8                                                       S_OBDIAG.792    
          Do kl = 1, ndim                                                  S_OBDIAG.793    
            dap3(k, 8, jl, kl) = dap3(k, 8, jl, kl)                        S_OBDIAG.794    
     &        + dap3(k, 6, jl, kl) + dap3(k, 18, jl, kl)                   S_OBDIAG.795    
     &        + dap3(k, 13, jl, kl)                                        S_OBDIAG.796    
          enddo                                                            S_OBDIAG.797    
        enddo                                                              S_OBDIAG.798    
        Call TABLE1('Q1 + BL + LSR + LSC (K Day^-1)', dap3,                S_OBDIAG.799    
     &    8, ndim, nout2)                                                  S_OBDIAG.800    
        Call TABLE1('Mixing ratio profile deviation(G Kg^-1 Day^-1)',      S_OBDIAG.801    
     &    dap3, 2, ndim, nout2)                                            S_OBDIAG.802    
        Call TABLE1('LS Moisture advection(K Day^-1)', dap3,               S_OBDIAG.803    
     &    4, ndim, nout2)                                                  S_OBDIAG.804    
        Call TABLE1('Boundary layer-latent heat(K Day^-1)', dap3, 7,       S_OBDIAG.805    
     &    ndim, nout2)                                                     S_OBDIAG.806    
        Call TABLE1('Large-scale rain-moisture(K Day^-1)', dap3, 19,       S_OBDIAG.807    
     &    ndim, nout2)                                                     S_OBDIAG.808    
        Call TABLE1('Q2 = Apparent moisture source(K Day^-1)', dap3,       S_OBDIAG.809    
     &    9, ndim, nout2)                                                  S_OBDIAG.810    
        Call TABLE1('Q2UD = Apparent moisture source(K Day^-1)', dap3,     S_OBDIAG.811    
     &    35, ndim, nout2)                                                 S_OBDIAG.812    
        Call TABLE1('Q2DD = Apparent moisture source(K Day^-1)', dap3,     S_OBDIAG.813    
     &    36, ndim, nout2)                                                 S_OBDIAG.814    
        Call TABLE1('Large scale cloud(K Day^-1)', dap3,                   S_OBDIAG.815    
     &    17, ndim, nout2)                                                 S_OBDIAG.816    
        Do  jl = 1, 8                                                      S_OBDIAG.817    
          Do  kl = 1, ndim                                                 S_OBDIAG.818    
            dap3(k, 9, jl, kl) = dap3(k, 9, jl, kl)                        S_OBDIAG.819    
     &        + dap3(k, 7, jl, kl) + dap3(k, 19, jl, kl)                   S_OBDIAG.820    
     &         + dap3(k, 17, jl, kl)                                       S_OBDIAG.821    
          enddo                                                            S_OBDIAG.822    
        enddo                                                              S_OBDIAG.823    
        Call TABLE1('Q2 + BL + LSR + LSC (G GK^-1 Day^-1)', dap3,          S_OBDIAG.824    
     &    9, ndim, nout2)                                                  S_OBDIAG.825    
        Call TABLE1('Cloud water (g Kg^-1)', dap3, 10, ndim, nout2)        S_OBDIAG.826    
        Call TABLE1('Cloud ice (g Kg^-1)', dap3, 11, ndim, nout2)          S_OBDIAG.827    
        Call TABLE1('Fractional cloud amount', dap3, 12, ndim, nout2)      S_OBDIAG.828    
        Call TABLE1('Mass flux (Pa s^-1) ', dap3, 20, ndim, nout2)         S_OBDIAG.829    
                                                                           S_OBDIAG.830    
        Call HEAD2('Sensible heat budgets-J m^-2 OR W m^-2', nout2)        S_OBDIAG.831    
        Call TAB21('TEMP', dab3, 1, nout2)                                 S_OBDIAG.832    
        Call TAB22('ADVF', dab3, 3, nout2)                                 S_OBDIAG.833    
        Call TAB22('RAD', dab3, 5, nout2)                                  S_OBDIAG.834    
        Call TAB22('BL', dab3, 6, nout2)                                   S_OBDIAG.835    
        Call TAB22('LSR', dab3, 18, nout2)                                 S_OBDIAG.836    
        Call TAB22('Q1', dab3, 8, nout2)                                   S_OBDIAG.837    
        Call TAB22('Q1UD', dab3, 41, nout2)                                S_OBDIAG.838    
        Call TAB22('Q1DD', dab3, 42, nout2)                                S_OBDIAG.839    
        Call TAB22('LSC', dab3, 13, nout2)                                 S_OBDIAG.840    
        Do  jl = 1, 8                                                      S_OBDIAG.841    
          dab3(k,8, jl) = dab3(k,8, jl) + dab3(k,6, jl)                    S_OBDIAG.842    
     &      + dab3(k,18, jl) + dab3(k,13, jl)                              S_OBDIAG.843    
        enddo                                                              S_OBDIAG.844    
        Call TAB22('SUMQ1', dab3, 8, nout2)                                S_OBDIAG.845    
                                                                           S_OBDIAG.846    
        Call HEAD2('Latent heat budget-J m^-2 OR W m^-2', nout2)           S_OBDIAG.847    
        Call TAB21('MIXR', dab3, 2, nout2)                                 S_OBDIAG.848    
        Call TAB22('ADVF', dab3, 4, nout2)                                 S_OBDIAG.849    
        Call TAB22('BL', dab3, 7, nout2)                                   S_OBDIAG.850    
        Call TAB22('LSR', dab3, 19, nout2)                                 S_OBDIAG.851    
        Call TAB22('Q2', dab3, 9, nout2)                                   S_OBDIAG.852    
        Call TAB22('Q2UD', dab3, 43, nout2)                                S_OBDIAG.853    
        Call TAB22('Q2DD', dab3, 44, nout2)                                S_OBDIAG.854    
        Call TAB22('LSC', dab3, 17, nout2)                                 S_OBDIAG.855    
        Do jl = 1, 8                                                       S_OBDIAG.856    
          dab3(k, 9, jl) = dab3(k, 9, jl) + dab3(k, 7, jl)                 S_OBDIAG.857    
     &      + dab3(k, 19, jl) - dab3(k, 17, jl)                            S_OBDIAG.858    
        enddo                                                              S_OBDIAG.859    
        Call TAB22('SUMQ2', dab3, 9, nout2)                                S_OBDIAG.860    
                                                                           S_OBDIAG.861    
      enddo                     ! k                                        S_OBDIAG.862    
      Return                                                               S_OBDIAG.863    
      End                       ! Subroutine OBS_DUMP_FINAL                S_OBDIAG.864    
C                                                                          S_OBDIAG.865    
C     Subroutine to print out additional diagnostics                       S_OBDIAG.866    
C                                                                          S_OBDIAG.867    

      Subroutine DIAG2(points, nbl_levs, iccb, icct, cca, lat_heat,         1S_OBDIAG.868    
     &  sens_heat, lw_flux, sw_flux, e_sea, conv_rain, conv_snow,          S_OBDIAG.869    
     &  ls_rain, ls_snow, rhokh, nout)                                     S_OBDIAG.870    
C                                                                          S_OBDIAG.871    
      Implicit none                                                        S_OBDIAG.872    
C                                                                          S_OBDIAG.873    
*CALL C_LHEAT                                                              S_OBDIAG.874    
      Integer                                                              S_OBDIAG.875    
     &  points                                                             S_OBDIAG.876    
     &  ,nbl_levs                                                          S_OBDIAG.877    
     &  ,iccb(points)           ! Convective cloud base and top  ,         S_OBDIAG.878    
     &  ,icct(points)           !  at levels 1 to NLEVS                    S_OBDIAG.879    
     &  ,nout                   ! Unit for output of observational         S_OBDIAG.880    
                                !  diagnostics                             S_OBDIAG.881    
C                                                                          S_OBDIAG.882    
      Real                                                                 S_OBDIAG.883    
     &  cca(points)             ! Convective cloud amount                  S_OBDIAG.884    
     &  ,lat_heat(points)       ! Surface latent heat flux,  + ve          S_OBDIAG.885    
                                !  upwards (W m^-2)                        S_OBDIAG.886    
     &  ,sens_heat(points)      ! Sensible heat (W m^-2)                   S_OBDIAG.887    
     &  ,lw_flux(points)        ! Net longwave flux over sea               S_OBDIAG.888    
                                !  portion of grid box if                  S_OBDIAG.889    
                                !  sea point (W m^-2)                      S_OBDIAG.890    
     &  ,sw_flux(points)        ! Net shortwave flux over sea              S_OBDIAG.891    
                                !  portion of grid box if                  S_OBDIAG.892    
                                !  sea point (W m^-2)                      S_OBDIAG.893    
     &  ,e_sea(points)          ! Evaporation from sea times leads         S_OBDIAG.894    
                                !  fraction. Zero over land.               S_OBDIAG.895    
                                !  (Kg m^-2 s^-1)                          S_OBDIAG.896    
     &  ,conv_rain(points)      ! Convective rainfall (Kg m^-2 s^-1)       S_OBDIAG.897    
     &  ,conv_snow(points)      ! Convective snowfall (Kg m^-2 s^-1)       S_OBDIAG.898    
     &  ,ls_rain(points)        ! Large scale rainfall rate (Kg m^-2)      S_OBDIAG.899    
     &  ,ls_snow(points)        ! Large scale snowfall rate                S_OBDIAG.900    
     &  ,rhokh(points, nbl_levs)                                           S_OBDIAG.901    
                                ! Exchange coeffs for moisture.            S_OBDIAG.902    
                                !  Surface:out of SF_EXCH contains         S_OBDIAG.903    
                                !  contains only rhokh.                    S_OBDIAG.904    
                                !  Above surface:out of kmkh contains      S_OBDIAG.905    
                                !  gamma(1) * rhokh(, 1) * rdz(, 1)        S_OBDIAG.906    
C                                                                          S_OBDIAG.907    
      Integer k                 ! Loop counter                             S_OBDIAG.908    
      Real                                                                 S_OBDIAG.909    
     &  c_rain(points)                                                     S_OBDIAG.910    
     &  ,c_snow(points)                                                    S_OBDIAG.911    
     &  ,l_rain(points)                                                    S_OBDIAG.912    
     &  ,l_snow(points)                                                    S_OBDIAG.913    
C                                                                          S_OBDIAG.914    
      Do k = 1, points                                                     S_OBDIAG.915    
        c_rain(k) = conv_rain(k) * Lc                                      S_OBDIAG.916    
        c_snow(k) = conv_snow(k) * (Lc + Lf)                               S_OBDIAG.917    
        l_rain(k) = ls_rain(k) * Lc                                        S_OBDIAG.918    
        l_snow(k) = ls_snow(k) * (Lc + Lf)                                 S_OBDIAG.919    
      enddo                                                                S_OBDIAG.920    
C                                                                          S_OBDIAG.921    
      Write (nout,  *)                                                     S_OBDIAG.922    
      Write (nout, 100)                                                    S_OBDIAG.923    
      Write (nout, 110)                                                    S_OBDIAG.924    
      Do k = 1, points                                                     S_OBDIAG.925    
        Write (nout, 120) iccb(k), icct(k), cca(k)                         S_OBDIAG.926    
      enddo                                                                S_OBDIAG.927    
C                                                                          S_OBDIAG.928    
      Write (nout,  *)                                                     S_OBDIAG.929    
      Write (nout, 130)                                                    S_OBDIAG.930    
      Write (nout, 140)                                                    S_OBDIAG.931    
      Do k = 1, points                                                     S_OBDIAG.932    
        Write (nout,  *) lat_heat(k), sens_heat(k), lw_flux(k),            S_OBDIAG.933    
     &    sw_flux(k), e_sea(k)                                             S_OBDIAG.934    
      enddo                                                                S_OBDIAG.935    
      Write (nout, 160)                                                    S_OBDIAG.936    
      Do k = 1, points                                                     S_OBDIAG.937    
        Write (nout,  *) c_rain(k), c_snow(k), l_rain(k), l_snow(k),       S_OBDIAG.938    
     &    rhokh(k, 1)                                                      S_OBDIAG.939    
      enddo                                                                S_OBDIAG.940    
C                                                                          S_OBDIAG.941    
 100  Format(1X, 'Convective cloud')                                       S_OBDIAG.942    
 110  Format(1X, 'Base', 2X, 'Top', 3X, 'Amount')                          S_OBDIAG.943    
 120  Format(1X, I3, 3X, I3, 3X, F5.3)                                     S_OBDIAG.944    
C                                                                          S_OBDIAG.945    
 130  Format(1X, 'Surface fluxes')                                         S_OBDIAG.946    
 140  Format(1X, 'LH', 9X, 'SH', 9X, 'LW', 9X, 'SW', 9X, 'E_SEA')          S_OBDIAG.947    
 150  Format(1X, E10.7, 1X, E10.7, 1X, E10.7, 1X, E10.7)                   S_OBDIAG.948    
 160  Format(1X, 'CR', 9X, 'CS', 9X, 'LR', 9X, 'LS', 9X, 'RHOKH')          S_OBDIAG.949    
C                                                                          S_OBDIAG.950    
      Return                                                               S_OBDIAG.951    
      End                       ! Subroutine DIAG2                         S_OBDIAG.952    
C                                                                          S_OBDIAG.953    
C     Routine to output OBS forcing data to produce graphs using           S_OBDIAG.954    
C     PV wave.                                                             S_OBDIAG.955    
C                                                                          S_OBDIAG.956    

      Subroutine OBS_GRAF(points, dap1, dapdim1, dapdim2, dab1,             1S_OBDIAG.957    
     &  dabdim1, dabdim2, day, time, iun)                                  S_OBDIAG.958    
C---------------------------------------------------------------------     S_OBDIAG.959    
C     Arguments                                                            S_OBDIAG.960    
C---------------------------------------------------------------------     S_OBDIAG.961    
      Implicit none                                                        S_OBDIAG.962    
      Integer                                                              S_OBDIAG.963    
     &  points                                                             S_OBDIAG.964    
     &  ,day                    ! IN                                       S_OBDIAG.965    
     &  ,dapdim1                ! IN I dimension array dap1                S_OBDIAG.966    
     &  ,dapdim2                ! IN J dimension array dap1                S_OBDIAG.967    
     &  ,dabdim1                ! IN I dimension array dab1                S_OBDIAG.968    
     &  ,dabdim2                ! IN J dimension array dab1                S_OBDIAG.969    
      Real                                                                 S_OBDIAG.970    
     &  dap1(points, dapdim1, dapdim2)                                     S_OBDIAG.971    
                                ! IN OBS. diagnostics to be output         S_OBDIAG.972    
                                !    for graph                             S_OBDIAG.973    
     &  ,dab1(points, dabdim1, dabdim2)                                    S_OBDIAG.974    
                                ! IN OBS. diagnostics to be output         S_OBDIAG.975    
                                !    for graph                             S_OBDIAG.976    
     &  ,time                                                              S_OBDIAG.977    
C                                                                          S_OBDIAG.978    
C     Local variables                                                      S_OBDIAG.979    
C                                                                          S_OBDIAG.980    
                                                                           S_OBDIAG.981    
      Integer                                                              S_OBDIAG.982    
     &  iun                     ! Unit for output                          S_OBDIAG.983    
      Integer                                                              S_OBDIAG.984    
     &  i, k                    ! Counters                                 S_OBDIAG.985    
     &  ,j                                                                 S_OBDIAG.986    
C                                                                          S_OBDIAG.987    
C                                                                          S_OBDIAG.988    
                                                                           S_OBDIAG.989    
      Do k = 1, points                                                     S_OBDIAG.990    
        Write (iun,  *) day, time,                                         S_OBDIAG.991    
     &    ((dap1(k, i, j), j = 1, dapdim2), i = 1, dapdim1),               S_OBDIAG.992    
     &    ((dab1(k, i, j), j = 1, dabdim2), i = 1, dabdim1)                S_OBDIAG.993    
      enddo                                                                S_OBDIAG.994    
                                                                           S_OBDIAG.995    
      Return                                                               S_OBDIAG.996    
      End                       ! Subroutine OBS_GRAF                      S_OBDIAG.997    
*ENDIF                                                                     S_OBDIAG.998