*IF DEF,OCEAN                                                              @DYALLOC.4601   
C ******************************COPYRIGHT******************************    GTS2F400.2143   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.2144   
C                                                                          GTS2F400.2145   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.2146   
C restrictions as set forth in the contract.                               GTS2F400.2147   
C                                                                          GTS2F400.2148   
C                Meteorological Office                                     GTS2F400.2149   
C                London Road                                               GTS2F400.2150   
C                BRACKNELL                                                 GTS2F400.2151   
C                Berkshire UK                                              GTS2F400.2152   
C                RG12 2SZ                                                  GTS2F400.2153   
C                                                                          GTS2F400.2154   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.2155   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.2156   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.2157   
C Modelling at the above address.                                          GTS2F400.2158   
C ******************************COPYRIGHT******************************    GTS2F400.2159   
C                                                                          GTS2F400.2160   
CLL ROUTINE : DIAG_PRT                                                     DIAG_PRT.2      
CLL                                                                        DIAG_PRT.3      
CLL PURPOSE : TO WRITE OUT DATA ON REQUIRED MODEL LEVELS AT THE            DIAG_PRT.4      
CLL         : END OF AN NNERGY TIMESTEP.READING OF DATA FROM THE           DIAG_PRT.5      
CLL         : DUMP IS THEREFORE REQUIRED,AND THIS IS DONE IN               DIAG_PRT.6      
CLL         : SUBROUTINES ANCILPRT,AND TSUVPNT (BOTH ARE IN DECK           DIAG_PRT.7      
CLL         : OCN_DIAG)                                                    DIAG_PRT.8      
CLL                                                                        DIAG_PRT.9      
CLL AUTHOR  : G.KELLY         DATE : 7/12/92                               DIAG_PRT.10     
CLL                                                                        DIAG_PRT.11     
CLL REVIEWER: S.INESON        DATE : 9/12/92                               DIAG_PRT.12     
CLL                                                                        DIAG_PRT.13     
CLL TESTED UNDER COMPILER :                                                DIAG_PRT.14     
CLL TESTED UNDER OS VERSION :                                              DIAG_PRT.15     
CLL CODE VERSION NO :         DATE : 7/12/92                               DIAG_PRT.16     
CLL                                                                        DIAG_PRT.17     
CLL MODIFICATION RECORD :                                                  DIAG_PRT.18     
CLL       21/05/93: DYNAMIC ALLOCATION EXTRA ARRAYS ADDED                  @DYALLOC.4602   
!     3.5    16.01.95   Remove *IF dependency. R.Hill                      ORH1F305.5455   
CLL   4.1  26/01/96  S'function printout now under TSUVPRT control. SI.    ORH2F401.82     
!     4.2  20/12/96  Pass FKMP - TSUVPNT for D1 data extraction            OSI0F402.176    
!                                               S.Ineson/R.Hill            OSI0F402.177    
!    4.4  05/08/97  Change J pointers and sizes supplied to MATRIX to      ORH4F404.78     
!                   avoid printing halo rows in mpp version. R. Hill       ORH4F404.79     
CLL PROGRAMMING STANDARD :                                                 DIAG_PRT.20     
CLL                                                                        DIAG_PRT.21     
CLL SYSTEM COMPONENTS COVERED :                                            DIAG_PRT.22     
CLL                                                                        DIAG_PRT.23     
CLL EXTERNAL DOCUMENTATION :                                               DIAG_PRT.24     
CLL                                                                        DIAG_PRT.25     
CLL ---------------------------------------------------------------        DIAG_PRT.26     
CLLEND                                                                     DIAG_PRT.27     
                                                                           DIAG_PRT.28     
C*L SUBROUTINE                                                             DIAG_PRT.29     
                                                                           DIAG_PRT.30     

      SUBROUTINE DIAG_PRT(                                                  1,3DIAG_PRT.31     
*CALL ARGSIZE                                                              @DYALLOC.4603   
*CALL ARGD1                                                                @DYALLOC.4604   
*CALL ARGDUMO                                                              @DYALLOC.4605   
*CALL ARGPTRO                                                              @DYALLOC.4606   
*CALL ARGOCALL                                                             @DYALLOC.4607   
*CALL ARGOINDX                                                             ORH7F402.292    
     & ITT ! #####################################################         @DYALLOC.4608   
     &,P,PB,PTD,PTDB                                                       OSI0F402.178    
     & )                                                                   DIAG_PRT.36     
                                                                           DIAG_PRT.37     
C*                                                                         DIAG_PRT.38     
C                                                                          RH141293.36     
      IMPLICIT NONE                                                        RH141293.37     
C                                                                          RH141293.38     
                                                                           DIAG_PRT.39     
*CALL OARRYSIZ                                                             ORH6F401.25     
*CALL TYPSIZE                                                              @DYALLOC.4609   
*CALL TYPD1                                                                @DYALLOC.4610   
*CALL TYPDUMO                                                              @DYALLOC.4611   
*CALL TYPPTRO                                                              @DYALLOC.4612   
*CALL TYPOINDX                                                             PXORDER.16     
*CALL TYPOCALL                                                             @DYALLOC.4613   
*CALL UMSCALAR                                                             DIAG_PRT.42     
*CALL CNTLOCN                                                              ORH1F305.5456   
                                                                           DIAG_PRT.45     
                                                                           DIAG_PRT.46     
C*L EXTERNAL SUBROUTINES CALLED                                            DIAG_PRT.47     
                                                                           DIAG_PRT.48     
      EXTERNAL                                                             DIAG_PRT.49     
     & MATRIX,                                                             DIAG_PRT.50     
     & TSUVPNT,                                                            DIAG_PRT.51     
     & ANCILWRT                                                            DIAG_PRT.52     
                                                                           DIAG_PRT.53     
C*--------------------------------------------------                       DIAG_PRT.54     
                                                                           DIAG_PRT.55     
                                                                           DIAG_PRT.56     
C*L ARGUMENTS                                                              DIAG_PRT.57     
                                                                           DIAG_PRT.58     
      REAL                                                                 ORH1F305.5458   
     & P(IMT_STREAM,JMT_STREAM),PB(IMT_STREAM,JMT_STREAM)                  ORH1F305.5459   
     &,PTD(IMT_STREAM,JMT_STREAM),PTDB(IMT_STREAM,JMT_STREAM)              ORH1F305.5460   
                                                                           DIAG_PRT.63     
                                                                           DIAG_PRT.64     
                                                                           DIAG_PRT.65     
      INTEGER ITT                                                          DIAG_PRT.66     
                                                                           DIAG_PRT.67     
C*--------------------------------------------------                       DIAG_PRT.68     
                                                                           DIAG_PRT.69     
CL  LOCAL VARIABLES                                                        DIAG_PRT.70     
                                                                           DIAG_PRT.71     
      REAL                                                                 DIAG_PRT.72     
     & SCL                                                                 DIAG_PRT.73     
                                                                           DIAG_PRT.74     
                                                                           DIAG_PRT.78     
CL 1. CHECK WHETHER AN ENERGY TIMESTEP                                     DIAG_PRT.79     
                                                                           DIAG_PRT.80     
      NERGY=0                                                              DIAG_PRT.81     
      IF (MOD(ITT,NNERGY).EQ.0) NERGY=1                                    DIAG_PRT.82     
                                                                           DIAG_PRT.83     
      IF (NERGY.EQ.1) THEN                                                 DIAG_PRT.84     
      IF (TSUVPRT) THEN                                                    ORH2F401.83     
                                                                           DIAG_PRT.85     
                                                                           DIAG_PRT.86     
      IF ((.NOT.L_ONOCLIN).AND.(.NOT.L_OFREESFC)) THEN                     ORH1F305.5461   
CL 2. PRINT THE STREAM FUNCTION ON AN ENERGY TIMESTEP                      DIAG_PRT.88     
                                                                           ORH1F305.5462   
        PRINT 8000,ITT                                                     DIAG_PRT.92     
 8000   FORMAT(' STREAM FUNCTION IN SVERDRUPS, TS=',I6)                    DIAG_PRT.93     
        SCL=1.E12                                                          DIAG_PRT.94     
        CALL MATRIX(P(1,J_1),IMT,2,IMTM1,J_JMT,0,SCL,0,J_OFFSET)           ORH4F404.80     
      ENDIF ! L_ONOCLIN and L_OFREESFC = false                             ORH1F305.5463   
                                                                           DIAG_PRT.97     
CL 3. PRINT OUT T,S,U,V FIELDS                                             DIAG_PRT.98     
                                                                           DIAG_PRT.99     
        IF ( KKK(1).GT.0 ) THEN                                            ORH2F401.84     
          CALL TSUVPNT (                                                   @DYALLOC.4614   
*CALL ARGSIZE                                                              SN260893.1      
*CALL ARGD1                                                                @DYALLOC.4616   
*CALL ARGDUMO                                                              @DYALLOC.4617   
*CALL ARGPTRO                                                              @DYALLOC.4618   
*CALL ARGOINDX                                                             ORH7F402.294    
     &                  LABS(NDISK),ITT,IMU,                               @DYALLOC.4619   
     &                  HR,                                                DIAG_PRT.102    
     &                  NDISKB,NDISK,NDISKA,FKMQ,FKMP,                     OSI0F402.179    
     &                  CSR,DXU2R,DYU2R,KKK)                               DIAG_PRT.104    
                                                                           DIAG_PRT.105    
      ENDIF       !  printout of TSUV on levels                            ORH2F401.85     
        ENDIF                                                              DIAG_PRT.106    
                                                                           DIAG_PRT.107    
CL 4. PRINT OUT ANCILLARY FIELDS                                           DIAG_PRT.108    
                                                                           DIAG_PRT.109    
        IF ( ANCILPRT ) THEN                                               DIAG_PRT.110    
          CALL ANCILWRT(                                                   @DYALLOC.4620   
*CALL ARGSIZE                                                              @DYALLOC.4621   
*CALL ARGD1                                                                @DYALLOC.4622   
*CALL ARGDUMO                                                              @DYALLOC.4623   
*CALL ARGPTRO                                                              @DYALLOC.4624   
*CALL ARGOINDX                                                             ORH7F402.295    
     &                  ITT)                                               @DYALLOC.4625   
        ENDIF                                                              DIAG_PRT.112    
                                                                           DIAG_PRT.113    
      ENDIF               ! NERGY TIMESTEP                                 DIAG_PRT.114    
                                                                           DIAG_PRT.115    
      RETURN                                                               DIAG_PRT.116    
                                                                           DIAG_PRT.117    
      END                                                                  DIAG_PRT.118    
*ENDIF                                                                     @DYALLOC.4626