*IF DEF,CONTROL,AND,DEF,ATMOS                                              GSS1F304.756    
C ******************************COPYRIGHT******************************    GTS2F400.2413   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.2414   
C                                                                          GTS2F400.2415   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.2416   
C restrictions as set forth in the contract.                               GTS2F400.2417   
C                                                                          GTS2F400.2418   
C                Meteorological Office                                     GTS2F400.2419   
C                London Road                                               GTS2F400.2420   
C                BRACKNELL                                                 GTS2F400.2421   
C                Berkshire UK                                              GTS2F400.2422   
C                RG12 2SZ                                                  GTS2F400.2423   
C                                                                          GTS2F400.2424   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.2425   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.2426   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.2427   
C Modelling at the above address.                                          GTS2F400.2428   
C ******************************COPYRIGHT******************************    GTS2F400.2429   
C                                                                          GTS2F400.2430   
CLL Subroutine ENG_CTL ----------------------------------------------      ENG_CTL1.3      
CLL                                                                        ENG_CTL1.4      
CLL Level 2 control routine                                                ENG_CTL1.5      
CLL Version for CRAY YMP                                                   ENG_CTL1.6      
CLL                                                                        ENG_CTL1.7      
CLL T.Johns     <- programmer of some or all of previous code or changes   ENG_CTL1.8      
CLL                                                                        ENG_CTL1.9      
CLL  Model            Modification history:                                ENG_CTL1.10     
CLL version  Date                                                          ENG_CTL1.11     
CLL   3.3  13/07/93   Added as new deck to diagnose energy correction.     ENG_CTL1.12     
CLL   3.3  23/02/94   Changed character*(*) to character*(80)              ENG_CTL1.13     
CLL                   for portability.  Tracey Smith                       ENG_CTL1.14     
CLL   3.4  22/06/94   DEF EMCORR removed (deck activator)                  GSS1F304.757    
CLL                                                  S.J.Swarbrick         GSS1F304.758    
CLL  3.5  05/06/95  Chgs to SI array.  RTHBarnes                           GRB4F305.124    
CLL                                                                        ENG_CTL1.15     
CLL Programming standard : unified model documentation paper No 3          ENG_CTL1.16     
CLL                                                                        ENG_CTL1.17     
CLL System components covered : P1                                         ENG_CTL1.18     
CLL                                                                        ENG_CTL1.19     
CLL System task : P0                                                       ENG_CTL1.20     
CLL                                                                        ENG_CTL1.21     
CLL Documentation:                                                         ENG_CTL1.22     
CLL                                                                        ENG_CTL1.23     
CLLEND -----------------------------------------------------------------   ENG_CTL1.24     
C*L Arguments                                                              ENG_CTL1.25     
                                                                           ENG_CTL1.26     

      SUBROUTINE ENG_CTL( INT14,TEMP_CORR_RATE,                             1,5ENG_CTL1.27     
*CALL ARGSIZE                                                              ENG_CTL1.28     
*CALL ARGD1                                                                ENG_CTL1.29     
*CALL ARGDUMA                                                              ENG_CTL1.30     
*CALL ARGDUMO                                                              ENG_CTL1.31     
*CALL ARGDUMW                                                              GKR1F401.200    
*CALL ARGSTS                                                               ENG_CTL1.32     
*CALL ARGPTRA                                                              ENG_CTL1.33     
*CALL ARGPTRO                                                              ENG_CTL1.34     
*CALL ARGCONA                                                              ENG_CTL1.35     
*CALL ARGPPX                                                               GKR0F305.923    
     &                    ICODE,CMESSAGE )                                 ENG_CTL1.36     
                                                                           ENG_CTL1.37     
      IMPLICIT NONE                                                        ENG_CTL1.38     
                                                                           ENG_CTL1.39     
      REAL                                                                 ENG_CTL1.40     
     &       TEMP_CORR_RATE ! Global mean temperature correction (K/s)     ENG_CTL1.41     
                                                                           ENG_CTL1.42     
      INTEGER                                                              ENG_CTL1.43     
     &       INT14,       ! Dummy variable for STASH_MAXLEN(14)            ENG_CTL1.44     
     &       ICODE        ! Return code : 0 Normal Exit                    ENG_CTL1.45     
                                                                           ENG_CTL1.46     
      CHARACTER*(80)                                                       ENG_CTL1.47     
     &       CMESSAGE     ! Error message if return code >0                ENG_CTL1.48     
                                                                           ENG_CTL1.49     
*CALL CMAXSIZE                                                             ENG_CTL1.50     
*CALL CSUBMODL                                                             GSS1F305.925    
*CALL TYPSIZE                                                              ENG_CTL1.51     
*CALL TYPD1                                                                ENG_CTL1.52     
*CALL TYPDUMA                                                              ENG_CTL1.53     
*CALL TYPDUMO                                                              ENG_CTL1.54     
*CALL TYPDUMW                                                              GKR1F401.201    
*CALL TYPSTS                                                               ENG_CTL1.55     
*CALL TYPPTRA                                                              ENG_CTL1.56     
*CALL TYPPTRO                                                              ENG_CTL1.57     
*CALL TYPCONA                                                              ENG_CTL1.58     
*CALL PPXLOOK                                                              GKR0F305.924    
                                                                           ENG_CTL1.59     
*CALL CHSUNITS                                                             ENG_CTL1.61     
*CALL CCONTROL                                                             ENG_CTL1.62     
*CALL C_R_CP                                                               ENG_CTL1.63     
*CALL C_G                                                                  ENG_CTL1.64     
                                                                           ENG_CTL1.65     
CL External subroutines called                                             ENG_CTL1.66     
                                                                           ENG_CTL1.67     
      EXTERNAL                                                             ENG_CTL1.68     
     &        TIMER,STASH                                                  ENG_CTL1.69     
                                                                           ENG_CTL1.70     
CL Dynamically allocated area for stash processing                         ENG_CTL1.71     
                                                                           ENG_CTL1.72     
      REAL                                                                 ENG_CTL1.73     
     &      STASHWORK(INT14)                                               ENG_CTL1.74     
                                                                           ENG_CTL1.75     
C Local variables                                                          ENG_CTL1.76     
                                                                           ENG_CTL1.77     
      INTEGER                                                              ENG_CTL1.78     
     &       I                                                             ENG_CTL1.79     
     &      ,IM_IDENT   ! internal model identifier                        GRB4F305.125    
     &      ,IM_INDEX   ! internal model index for STASH arrays            GRB4F305.126    
                                                                           ENG_CTL1.80     
CL                                                                         ENG_CTL1.81     
CL--- SECTION 14 --- ENERGY CORRECTION DIAGNOSTIC(S) ---                   ENG_CTL1.82     
CL                                                                         ENG_CTL1.83     
                                                                           ENG_CTL1.84     
      IF(LTIMER) THEN                                                      ENG_CTL1.85     
        CALL TIMER('ENG_CTL ',3)                                           ENG_CTL1.86     
      END IF                                                               ENG_CTL1.87     
                                                                           GRB4F305.127    
C  Set up internal model identifier and STASH index                        GRB4F305.128    
      im_ident = atmos_im                                                  GRB4F305.129    
      im_index = internal_model_index(im_ident)                            GRB4F305.130    
                                                                           ENG_CTL1.88     
      CMESSAGE=' '                                                         ENG_CTL1.89     
      ICODE=0                                                              ENG_CTL1.90     
                                                                           ENG_CTL1.91     
C  Broadcast temperature correction rate from scalar to full field         ENG_CTL1.92     
C  and multiply up by column mass weighting factor to convert to flux      ENG_CTL1.93     
                                                                           ENG_CTL1.94     
      IF (SF(201,14)) THEN                                                 ENG_CTL1.95     
        DO I=1,P_FIELD                                                     ENG_CTL1.96     
         STASHWORK(SI(201,14,im_index)+I-1)=                               GRB4F305.131    
     &                           (CP/G)*TEMP_CORR_RATE*D1(JPSTAR+I-1)      GRB4F305.132    
        END DO                                                             ENG_CTL1.98     
      ENDIF                                                                ENG_CTL1.99     
                                                                           ENG_CTL1.100    
C call STASH to process output                                             ENG_CTL1.101    
                                                                           ENG_CTL1.102    
      IF(LTIMER) THEN                                                      ENG_CTL1.103    
        CALL TIMER('STASH   ',3)                                           ENG_CTL1.104    
      END IF                                                               ENG_CTL1.105    
                                                                           ENG_CTL1.106    
      CALL STASH(a_sm,a_im,14,STASHWORK,                                   GKR0F305.925    
*CALL ARGSIZE                                                              ENG_CTL1.108    
*CALL ARGD1                                                                ENG_CTL1.109    
*CALL ARGDUMA                                                              ENG_CTL1.110    
*CALL ARGDUMO                                                              ENG_CTL1.111    
*CALL ARGDUMW                                                              GKR1F401.202    
*CALL ARGSTS                                                               ENG_CTL1.112    
*CALL ARGPPX                                                               GKR0F305.926    
     &           ICODE,CMESSAGE)                                           ENG_CTL1.116    
                                                                           ENG_CTL1.117    
      IF(LTIMER) THEN                                                      ENG_CTL1.118    
        CALL TIMER('STASH   ',4)                                           ENG_CTL1.119    
      END IF                                                               ENG_CTL1.120    
                                                                           ENG_CTL1.121    
      IF(LTIMER) THEN                                                      ENG_CTL1.122    
        CALL TIMER('ENG_CTL ',4)                                           ENG_CTL1.123    
      END IF                                                               ENG_CTL1.124    
                                                                           ENG_CTL1.125    
      RETURN                                                               ENG_CTL1.126    
      END                                                                  ENG_CTL1.127    
                                                                           ENG_CTL1.128    
C -----------------------------------------------------                    ENG_CTL1.129    
                                                                           ENG_CTL1.130    
*ENDIF                                                                     ENG_CTL1.131