*IF DEF,CONTROL,AND,DEF,ATMOS                                              RAD_CTL1.2      
C ******************************COPYRIGHT******************************    GTS2F400.7939   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.7940   
C                                                                          GTS2F400.7941   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.7942   
C restrictions as set forth in the contract.                               GTS2F400.7943   
C                                                                          GTS2F400.7944   
C                Meteorological Office                                     GTS2F400.7945   
C                London Road                                               GTS2F400.7946   
C                BRACKNELL                                                 GTS2F400.7947   
C                Berkshire UK                                              GTS2F400.7948   
C                RG12 2SZ                                                  GTS2F400.7949   
C                                                                          GTS2F400.7950   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.7951   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.7952   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.7953   
C Modelling at the above address.                                          GTS2F400.7954   
C ******************************COPYRIGHT******************************    GTS2F400.7955   
C                                                                          GTS2F400.7956   
CLL Subroutine RAD_CTL -----------------------------------------------     RAD_CTL1.3      
CLL                                                                        RAD_CTL1.4      
CLL   Purpose:  Reads in radiation increments from external file           RAD_CTL1.5      
CLL  unless both radiation calculations are to be performed. Calculates    RAD_CTL1.6      
CLL  CO2 mixing ratio. Sets up ozone data. At short wave radiation         RAD_CTL1.7      
CLL  timesteps, calls astronomy and albedo calculations, calculates        RAD_CTL1.8      
CLL  index of sunlit points, and calls short wave calculations.            RAD_CTL1.9      
CLL  At long wave radiation timesteps, calls long wave calculations.       RAD_CTL1.10     
CLL  Writes out radiation increments if either radiation calculation       RAD_CTL1.11     
CLL  has been performed. Adds total radiation increment to temperatures,   RAD_CTL1.12     
CLL  and sets up total net down fluxes to pass to the boundary layer       RAD_CTL1.13     
CLL  routine. It also produces additional output to pass to                RAD_CTL1.14     
CLL  the ice model via STASH, and produces short / long wave radiation     RAD_CTL1.15     
CLL  diagnostics for STASH processing.                                     RAD_CTL1.16     
CLL                                                                        RAD_CTL1.17     
CLL       Release 2.7 of the UM re-scales the SW atmospheric               RAD_CTL1.24     
CLL    heating rates and net surface flux every physics timestep in        RAD_CTL1.25     
CLL    proportion to the incoming insolation (here and in CLD_CTL).        RAD_CTL1.26     
CLL                                          W. Ingram  14/7/92            RAD_CTL1.27     
CLL Level 2 control routine                                                RAD_CTL1.28     
CLL version for CRAY YMP                                                   RAD_CTL1.29     
CLL                                                                        RAD_CTL1.30     
CLL SB, CW, WI  <- programmer of some or all of previous code or changes   RAD_CTL1.31     
CLL                                                                        RAD_CTL1.32     
CLL  Model            Modification history from model version 3.0:         RAD_CTL1.33     
CLL version  Date                                                          RAD_CTL1.34     
CLL  3.1    3/02/93 : added comdeck CHSUNITS to define NUNITS for i/o      RS030293.128    
CLL   3.1  08/02/93    Pass SWBANDS as argument for portability            AD080293.2      
CLL                    Author: A. Dickinson    Reviewer: C. Wilson         AD080293.3      
CLL   3.2    13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for          TS150793.141    
CLL                   portability.  Author Tracey Smith.                   TS150793.142    
CLL  3.2  13/04/93  Dynamic allocation of main arrays. R T H Barnes.       @DYALLOC.2994   
CLL  3.4   20/06/94   Argument LCAL360 passed to SOLPOS                    GSS1F304.765    
CLL                   DEF EMCORR replaced by LOGICAL LEMCORR               GSS1F304.766    
CLL                                                    S.J.Swarbrick       GSS1F304.767    
CLL  3.4  06/08/94  Code restructured to improve parallel efficiency       AAD1F304.82     
CLL                 on C90. Based on code provided by Rupert Ford          AAD1F304.83     
CLL                 (CNC, Man Univ) to parallelise/macrotask               AAD1F304.84     
CLL                 over segmented calls to SWRAD & LWRAD.                 AAD1F304.85     
CLL                 Authors: A.Dickinson, D.Salmond, Reviewer: R.Barnes    AAD1F304.86     
CLL  3.4     09/09/94 Change to call to subroutine FTSA. C D Hewitt        AWA1F304.1391   
CLL  3.4     02/10/94 Change to call to LWRAD, and new comdeck RAD_COM     AWA1F304.1392   
CLL                  containing common block RAD_COM *CALLed. S Woodward   AWA1F304.1393   
CLL  3.4   31/8/94     nupdate *IFs replaced by FORTRAN IFs  (W Ingram)    AWI3F304.21     
CLL  3.5   28/03/95  Sub-model changes : Remove run time constants         ADR1F305.112    
CLL                  from Atmos dump headers. New variable CO2_MMR for     ADR1F305.113    
CLL                  CO2 Mass Mixing Ratio. D. Robinson.1                  ADR1F305.114    
!     3.5    9/5/95   MPP code: Change updateable area,                    APB1F305.361    
!                     add halo updates    P.Burton                         APB1F305.362    
CLL  3.5  05/06/95  Chgs to SI & STINDEX arrays.  RTHBarnes                GRB4F305.345    
!    4.0  27/07/95  Code Modified to add call to general two-stream        ADB1F400.55     
!                   radiation code. Call to FTSA modified. Change          ADB1F400.56     
!                   also includes Paul Burton's fix to enable              ADB1F400.57     
!                   macro-tasking of versions 1A and 2A.                   ADB1F400.58     
!                                         J. M. Edwards                    ADB1F400.59     
CLL  4.0   1/2/95    Correct time information for calculating solar        AWI1F400.1      
CLL                                           angle, and so incoming SW.   AWI1F400.2      
CLL  4.1  19/1/96   Supplies photosynthetically active radiation to        AJS1F401.952    
CLL                 vegetation model in Section 3.       R.A.Betts         AJS1F401.953    
!    4.1  10/06/96  Code added to include the radiative effects            ADB1F401.766    
!                   of the sulphur cycle.                                  ADB1F401.767    
!                                         J. M. Edwards                    ADB1F401.768    
!    4.1  23/05/96  MPP Changes. D. Robinson.                              APBBF401.2      
CLL  4.1   01/03/96  Correct error when *DEF FAST and (232,1) diagnostic   ARR2F401.1      
CLL                  enabled, which led to radiation increments being      ARR2F401.2      
CLL                  scaled by the wrong factor.                           ARR2F401.3      
CLL                  Also remove explicit setting of each SW               ARR2F401.4      
CLL                  diagnostic to zero when entire domain is in           ARR2F401.5      
CLL                  darkness (all radiation diagnostics already           ARR2F401.6      
CLL                  initialised to zero).               R. Rawlins        ARR2F401.7      
CLL   4.1  22/05/96  Replaced *DEF FAST with FRADIO to allow fast          GGH3F401.24     
CLL                  radiation i/o code to be used. G Henderson            GGH3F401.25     
!LL   4.2  30/09/96  Made MPP code aware of extra level of radincs for     APB1F402.25     
!LL                  storing photsynthesis radiation.  P. Burton           APB1F402.26     
!    4.2  08/08/96  Code for aerosols reworked to allow both               ADB1F402.583    
!                   sulphate and climatological aerosols.                  ADB1F402.584    
!                                        (J. M. Edwards)                   ADB1F402.585    
CLL   4.2  Nov. 96   T3E migration: replaced c90 function WHENIMD          GSS9F402.140    
CLL                   by equivalent fortran code.  S.J.Swarbrick           GSS9F402.141    
!LL   4.3  10/02/97  Added PPX arguments to COPY_DIAG and                  GPB1F403.1258   
!LL                  EXT_DIAG                          P.Burton            GPB1F403.1259   
!     4.3  20/02/97  Call GC_IMAX to derive global value for               ADR3F403.1      
!                    GLOBAL_CLOUD_TOP. D. Robinson.                        ADR3F403.2      
!LL   4.3  05/03/97  Add SWAPBOUNDS for PHOTOSYNTH_ACT_RAD.                ADR4F403.1      
!LL                  D. Robinson                                           ADR4F403.2      
CLL   4.3  May. 97   Correct unsafe MPP code before SW radiation:          ARR0F403.1      
CLL                   DAY_FRACTION array for poleward pes. R.Rawlins.      ARR0F403.2      
CLL   4.3   18/3/97  Add CALLs to GAS_CALC, allowing complex variation     AWI1F403.137    
CLL  of radiative forcings in time, and changes for 2B (HadCM2) SW.  WJI   AWI1F403.138    
!LL  4.4  05/07/97  FLUX_DIAG args changed. S.D.Mullerworth                GSM3F404.46     
!     4.4  12/03/97  Argument L_CLOUD_WATER_PARTITION passed into          AYY1F404.246    
!                    cloud calculation code. A Bushell                     AYY1F404.247    
CLL   4.4  29/10/97  Modified for MOSES II and prognostic snow albedo      ARE2F404.70     
CLL                  scheme.                                R. Essery      ARE2F404.71     
!LL   4.4  03/09/97  Recoding of the argument list for 3A-radiation.       ADB2F404.903    
!LL                  Diagnostics of net, SW upward and LW downward         ADB2F404.904    
!LL                  flux at the tropopause added.                         ADB2F404.905    
!LL                                      (J. M. Edwards)                   ADB2F404.906    
!!!  4.4   18/9/97  SW Heating rates calculated for A03_6A                 ARN1F404.118    
!!!                                             Cyndy Bunton               ARN1F404.119    
CLL                                                                        RAD_CTL1.35     
!LL   4.4  22/10/97  Add logical L_3D_CCA and integer N_CCA_LEV to         AJX0F404.4      
!LL                  determine how many levels conv. cloud amount          AJX0F404.5      
!LL                  is on.                           J.M.Gregory          AJX0F404.6      
!LL   4.5  17/04/98  Move timer for SWRAD so that it can safely have       GPB8F405.55     
!LL                  a barrier inside (ie. outside of test for non-zero    GPB8F405.56     
!LL                  daylight points).                      P.Burton       GPB8F405.57     
!LL   4.5  18/05/98  Add code to include forcing scenarios for             ADB1F405.463    
!LL                  some extra (H)(C)FCs.                                 ADB1F405.464    
!LL                                                   J. M. Edwards        ADB1F405.465    
CLL   4.5  15/07/98  Full 3D CO2 tracer field added for use within         ACN2F405.42     
CLL                  interactive carbon cycle. C.D. Jones                  ACN2F405.43     
!!!   4.5    2/6/98  Correct RAD_SNOW and RAD_NO_SNOW over sea and omit    ABX1F405.114    
!!!                  top and bottom halo rows from 'tile' calculations     ABX1F405.115    
!!!                  calling SWAPBOUNDS instead.      R.A.Betts            ABX1F405.116    
CLL   4.5  21.8.98   Change the call to FTSA (not 2B) to pass extra        AJG1F405.26     
CLL                  variables for the HADCM4 scheme in which the          AJG1F405.27     
CLL                  snow on sea-ice modifies its albedo.                  AJG1F405.28     
CLL                  Jonathan Gregory                                      AJG1F405.29     
!LL   4.5  13/05/98  Altered argument list: now contains cloud area.       ASK1F405.259    
!LL                  Altered calls to R2_GLOBAL_CLOUD_TOP, SWRAD and       ASK1F405.260    
!LL                  LWRAD versions 3A only.           S. Cusack           ASK1F405.261    
CLL   4.5  21/07/98  Replace sequence numbers AWI1F403.306-313 and         GHM5F405.1      
CLL                  AWI1F403.325-337 which were duplicates. M.J.Hatton    GHM5F405.2      
CLL                                                                        AJS1F401.954    
!LL   4.5  Apr 1998  Fill arrays FRESH_SOOT and AGED_SOOT and pass         ALR3F405.15     
!LL                  to R2_SWRAD and R2_LWRAD when soot radiative          ALR3F405.16     
!LL                  effects are used.                Luke Robinson.       ALR3F405.17     
CLL                                                                        ALR3F405.18     
CLL programming standard : unified model documentation paper No 3          RAD_CTL1.36     
CLL                        version No 2 dated 07/09/90                     RAD_CTL1.37     
CLL                                                                        RAD_CTL1.38     
CLL Logical components covered : P23                                       RAD_CTL1.39     
CLL                                                                        RAD_CTL1.40     
CLL system task : P0                                                       RAD_CTL1.41     
CLL                                                                        RAD_CTL1.42     
CLL  Documentation: Unified Model Documentation paper no. P0               RAD_CTL1.43     
CLL                 version No11 dated 26/11/90                            RAD_CTL1.44     
CLL                                                                        RAD_CTL1.45     
CLLEND -----------------------------------------------------------------   RAD_CTL1.46     
C*L Arguments                                                              RAD_CTL1.47     
                                                                           RAD_CTL1.48     

      SUBROUTINE RAD_CTL(CLOUD_FRACTION,SIN_TRUE_LATITUDE,DAY_FRACTION,     1,101RAD_CTL1.49     
     &             COS_ZENITH_ANGLE, NETSW, SURF_RADFLUX, LIST, SWITCH,    RAD_CTL1.50     
     &             AREA_CLOUD_FRACTION,                                    ASK1F405.262    
     &             RAD_NO_SNOW, RAD_SNOW, SNOW_FRAC_LAND,                  ARE2F404.72     
     &             PHOTOSYNTH_ACT_RAD,RADHEAT_RATE,                        ARN1F404.120    
     &             P_FIELDDA,P_LEVELSDA,Q_LEVELSDA,OZONE_LEVELSDA,         @DYALLOC.2995   
     &             CLOUD_LEVELSDA,BL_LEVELSDA,L_RADHEAT,RADHEAT_DIM1,      ARN1F404.121    
     &             SWBANDS, STASHLEN, CO2_DIM1, CO2_DIM2,                  ACN2F405.44     
     & SULP_DIM1, SULP_DIM2, SOOT_DIM1, SOOT_DIM2,                         ALR3F405.19     
     &             NLALBS, W1236_DIM, SAL_DIM,                             ALR3F405.20     
*CALL ARGSIZE                                                              @DYALLOC.2997   
*CALL ARGD1                                                                @DYALLOC.2998   
*CALL ARGDUMA                                                              @DYALLOC.2999   
*CALL ARGDUMO                                                              @DYALLOC.3000   
*CALL ARGDUMW                                                              GKR1F401.252    
*CALL ARGSTS                                                               @DYALLOC.3001   
*CALL ARGPTRA                                                              @DYALLOC.3002   
*CALL ARGPTRO                                                              @DYALLOC.3003   
*CALL ARGCONA                                                              @DYALLOC.3004   
*CALL ARGPPX                                                               GKR0F305.973    
*CALL ARGFLDPT                                                             APBBF401.3      
*IF DEF,FRADIO                                                             GGH3F401.26     
     &             RADINCS,                                                @DYALLOC.3006   
*ENDIF                                                                     @DYALLOC.3007   
     &             ICODE,CMESSAGE)                                         @DYALLOC.3008   
                                                                           RAD_CTL1.52     
      IMPLICIT NONE                                                        RAD_CTL1.53     
                                                                           @DYALLOC.3009   
*CALL CMAXSIZE                                                             @DYALLOC.3010   
*CALL CSUBMODL                                                             GSS1F305.935    
*CALL TYPSIZE                                                              @DYALLOC.3011   
*CALL TYPD1                                                                @DYALLOC.3012   
*CALL TYPDUMA                                                              @DYALLOC.3013   
*CALL TYPDUMO                                                              @DYALLOC.3014   
*CALL TYPDUMW                                                              GKR1F401.253    
*CALL TYPSTS                                                               @DYALLOC.3015   
*CALL TYPPTRA                                                              @DYALLOC.3016   
*CALL TYPPTRO                                                              @DYALLOC.3017   
*CALL TYPCONA                                                              @DYALLOC.3018   
*CALL PPXLOOK                                                              GKR0F305.974    
*CALL TYPFLDPT                                                             APBBF401.4      
                                                                           RAD_CTL1.54     
      INTEGER                                                              RAD_CTL1.55     
     &       ICODE,       ! Return code : 0 Normal Exit                    RAD_CTL1.56     
C                         !             : >0 Error                         RAD_CTL1.57     
     &       P_FIELDDA,     ! IN: Extra values of P_FIELD                  @DYALLOC.3019   
     &       P_LEVELSDA,    ! and P_LEVELS                                 @DYALLOC.3020   
     &       Q_LEVELSDA,    ! and Q_LEVELS                                 @DYALLOC.3021   
     &       OZONE_LEVELSDA,! and OZONE_LEVELS                             @DYALLOC.3022   
     &       CLOUD_LEVELSDA,! and CLOUD_LEVELS                             @DYALLOC.3023   
     &       BL_LEVELSDA,   ! and BL_LEVELS                                ARN1F404.123    
     &       RADHEAT_DIM1,  ! Dimension for RADHEAT_RATE                   ARN1F404.124    
     &       STASHLEN,    ! Maximum length for diagnostic space for        RAD_CTL1.60     
C                         ! sections 1 and 2                               RAD_CTL1.61     
     &       SOOT_DIM1,SOOT_DIM2,   !IN, dimensions for soot arrays        ALR3F405.21     
     &       SULP_DIM1,SULP_DIM2,   !IN, dimensions for _SULPHATE arrays   ADB1F401.770    
     &       CO2_DIM1,CO2_DIM2,     !IN, dimensions for CO2_3D array       ACN2F405.45     
     &       NLALBS,      ! IN Number of fields of land surface albedo     AWI1F403.140    
     &       W1236_DIM,   ! IN Dimensions array used only if SF(236,1)     AWI1F404.13     
     &       SAL_DIM,     ! IN Dimensions arrays used only if              ARE2F404.74     
C                         !    L_SNOW_ALBEDO = .TRUE.                      ARE2F404.75     
     &       LIST(P_FIELDDA)                                               @DYALLOC.3024   
     &      ,SWBANDS   !IN No of short wave bands used in rad scheme       AD080293.5      
                                                                           RAD_CTL1.63     
      REAL                                                                 RAD_CTL1.64     
     &      CLOUD_FRACTION(P_FIELDDA,Q_LEVELSDA),                          @DYALLOC.3025   
     &      RADHEAT_RATE(RADHEAT_DIM1,BL_LEVELSDA),                        ARN1F404.125    
     &       AREA_CLOUD_FRACTION(P_FIELDDA,Q_LEVELSDA),                    ASK1F405.263    
!            Radiation only cloud fraction (always >= cloud_fraction)      ASK1F405.264    
!                                                                          ASK1F405.265    
     &      SIN_TRUE_LATITUDE(P_FIELDDA),                                  @DYALLOC.3026   
     &      DAY_FRACTION(P_FIELDDA),                                       @DYALLOC.3027   
     &      COS_ZENITH_ANGLE(P_FIELDDA),                                   @DYALLOC.3028   
     &      NETSW(P_FIELDDA),                                              @DYALLOC.3029   
     &       NET_ATM_FLUX(P_FIELDDA),                                      GSS1F304.768    
     &      SURF_RADFLUX(P_FIELDDA)                                        @DYALLOC.3031   
     &     ,RAD_NO_SNOW(P_FIELDDA)        ! Surface net radiation,         ARE2F404.76     
C                                         ! snow-free fraction             ARE2F404.77     
     &     ,RAD_SNOW(P_FIELDDA)           ! Surface net radiation,         ARE2F404.78     
C                                         ! snow-covered fraction          ARE2F404.79     
     &     ,SNOW_FRAC_LAND(LAND_FIELD)    ! Snow cover fraction on         ARE2F404.80     
C                                         ! land points                    ARE2F404.81     
     &     ,PHOTOSYNTH_ACT_RAD(P_FIELDDA) ! Photosynthetically active      AJS1F401.956    
C                                         ! radiation                      AJS1F401.957    
                                                                           RAD_CTL1.74     
      LOGICAL                                                              RAD_CTL1.75     
     &       SWITCH(P_FIELDDA)                                             @DYALLOC.3032   
      LOGICAL L_RADHEAT    ! True if RADHEAT_RATE to be calculated.        ARN1F404.126    
                                                                           RAD_CTL1.77     
      CHARACTER*(80)                                                       TS150793.143    
     &       CMESSAGE     ! Error message if return code >0                RAD_CTL1.79     
                                                                           RAD_CTL1.80     
*IF DEF,MPP                                                                APB1F305.363    
! Parameters and Common blocks                                             APB1F305.364    
*CALL PARVARS                                                              APB1F305.365    
*ENDIF                                                                     APB1F305.366    
*CALL CHSUNITS                                                             RS030293.129    
*CALL CCONTROL                                                             RAD_CTL1.82     
*CALL CTIME                                                                RAD_CTL1.86     
*CALL CHISTORY                                                             GDR3F305.158    
*CALL C_OMEGA                                                              RAD_CTL1.88     
*CALL C_MDI                                                                RAD_CTL1.89     
*CALL SWSC                                                                 RAD_CTL1.90     
*CALL C_R_CP                                                               AWI1F402.1      
*CALL RAD_COM                                                              AWA1F304.1394   
*IF DEF,FRADIO                                                             GGH3F401.27     
*CALL CRADINCS                                                             RAD_CTL1.92     
*ENDIF                                                                     RAD_CTL1.93     
*CALL CRUNTIMC                                                             ADR1F305.115    
*CALL CSENARIO                                                             AWI1F403.142    
*CALL NSTYPES                                                              ARE2F404.82     
*CALL CSIGMA                                                               ARE2F404.83     
*CALL MXSIZE3A                                                             ADB2F404.907    
                                                                           RAD_CTL1.94     
CL Subroutines called                                                      RAD_CTL1.95     
                                                                           RAD_CTL1.96     
      EXTERNAL                                                             RAD_CTL1.97     
     &      SOLPOS, SOLANG, FTSA, SWRAD, LWRAD, TIMER, STASH               GSS1F403.54     
     &     ,SETPOS,COPYDIAG,COPYDIAG_3D,EXTDIAG,BUFFIN,BUFFOUT             RAD_CTL1.99     
     &     ,SET_PSEUDO_LIST, SET_LEVELS_LIST                               RAD_CTL1.100    
     &     ,TROPIN                                                         ADB2F404.908    
     &     ,FLUX_DIAG                                                      GSS1F304.769    
     &     ,R2_SWRAD, R2_LWRAD                                             ADB2F404.909    
                                                                           RAD_CTL1.104    
                                                                           ADB1F400.62     
CL Dynamically allocated area for stash processing                         RAD_CTL1.105    
                                                                           RAD_CTL1.106    
      REAL                                                                 RAD_CTL1.107    
     &      STASHWORK(STASHLEN)                                            RAD_CTL1.108    
                                                                           RAD_CTL1.109    
CL Other dynamically allocated space                                       RAD_CTL1.110    
                                                                           RAD_CTL1.111    
      REAL                                                                 RAD_CTL1.112    
*IF -DEF,FRADIO                                                            GGH3F401.28     
C Include extra levels in RADINCS to hold band 1 net surface SW before     ARE2F404.84     
C zenith angle adjustment and surface albedo or surface radiative temp     ARE2F404.85     
     &      RADINCS((P_FIELDDA*(P_LEVELSDA+3)+511)/512*512),               ARE2F404.86     
*ENDIF                                                                     RAD_CTL1.115    
     &      OZONE_1(P_FIELDDA,OZONE_LEVELSDA),                             GDR3F305.159    
     &      MEAN_COSZ(P_FIELDDA),        !  Mean cos(solar zenith angle)   @DYALLOC.3035   
C     !            over the whole SW timestep (including any night time)   RAD_CTL1.118    
     &      SAL_VIS(SAL_DIM,2),                                            ARE2F404.87     
     &      SAL_NIR(SAL_DIM,2),                                            ARE2F404.88     
     &      LAND_AND_ICE_ALBEDO(P_FIELDDA,NLALBS),                         AWI1F403.143    
     &      NO_SULPHATE_ALBEDO(W1236_DIM,2),                               AWI1F403.144    
     &      OPEN_SEA_ALBEDO(P_FIELDDA,2),                                  @DYALLOC.3037   
     &      OLR(P_FIELDDA)                                                 @DYALLOC.3038   
     &     ,ALBSNF(P_FIELDDA)                                              ARE2F404.89     
     &     ,SNOW_FRAC(P_FIELDDA)                                           ARE2F404.90     
     &     ,TSTAR_RAD(P_FIELDDA)                                           ARE2F404.91     
     &     ,TSTAR_SNOW(P_FIELDDA)                                          ARE2F404.92     
     &   ,CO2_3D(CO2_DIM1,CO2_DIM2)                                        ACN2F405.46     
                                                                           RAD_CTL1.122    
C        RADINCS dimensioned for 512word blocking                          RAD_CTL1.123    
                                                                           AWI1F402.3      
      INTEGER TRINDX(P_FIELDDA)                                            AWI1F402.4      
C                                                                          RAD_CTL1.124    
C      Levels Lists & Pseudo-levels Lists for diagnostics which are the    RAD_CTL1.125    
C   product of Layer & Convective cloud Amounts * Albedos to diRect &      RAD_CTL1.126    
C   diFfuse light.                                                         RAD_CTL1.127    
      LOGICAL LLLAAR(CLOUD_LEVELSDA), LLLAAF(CLOUD_LEVELSDA),              @DYALLOC.3039   
     &   PLLAAR(SWBANDS), PLLAAF(SWBANDS),                                 AD080293.6      
     &   PLCAAR(SWBANDS), PLCAAF(SWBANDS)                                  AD080293.7      
                                                                           RAD_CTL1.131    
C Local variables                                                          RAD_CTL1.132    
!                                                                          ADB1F400.63     
      LOGICAL                                                              ADB1F400.64     
     &   L_3_CLOUD                !Logical for reduction to 3-clouds       ADB1F400.65     
     &  ,L_FLUX_BELOW_690NM_SURF  !Logical to calculate surface flux       ADB1F401.771    
                                  !below 690 nm                            ADB1F401.772    
     &  ,L_GLOBAL_CLOUD_TOP   !Logical to use a global value for the       ADB1F402.834    
     &                        !topmost cloudy layer under 3A-radiation.    ADB1F402.835    
     &  ,L_CLOUD_WATER_PARTITION                                           AYY1F404.248    
!                                  Logical for cloud ice/water partition   AYY1F404.249    
     &  ,L_MOSES_II           !Logical for MOSES II land-surface scheme    ARE2F404.93     
     &   ,L_CO2_3D   ! local logical to control use of 3D co2 field        ACN2F405.47     
!                                                                          ADB1F401.773    
!     Local Arrays for the Sulphur Cycle                                   ADB1F401.774    
      REAL                                                                 ADB1F401.775    
     &       ACCUM_SULPHATE(SULP_DIM1,SULP_DIM2)                           ADB1F401.776    
!              Local array of accumulation-mode Sulphate                   ADB1F401.777    
     &    ,  AITKEN_SULPHATE(SULP_DIM1,SULP_DIM2)                          ADB1F401.778    
!              Local array of Aitken-mode Sulphate                         ADB1F401.779    
     &    ,  DISS_SULPHATE(SULP_DIM1,SULP_DIM2)                            ADB2F404.910    
!              Local array of dissolved sulphate                           ADB2F404.911    
     &,FRESH_SOOT(SOOT_DIM1,SOOT_DIM2),AGED_SOOT(SOOT_DIM1,SOOT_DIM2)      ALR3F405.23     
!              Fresh and aged soot MMRs.                                   ALR3F405.24     
!                                                                          ADB1F401.780    
      INTEGER SEG_POINTS_TEMP(MAX_NO_OF_SEGS),                             AAD1F304.87     
     &        FIRST_POINT_TEMP(MAX_NO_OF_SEGS),                            AAD1F304.88     
     &        JS_TEMP(MAX_NO_OF_SEGS)                                      AAD1F304.89     
                                                                           AAD1F304.90     
      INTEGER                                                              RAD_CTL1.134    
     &       JS,JS_LOCAL(MAX_NO_OF_SEGS),                                  AAD1F304.91     
     &       FIRST_POINT,FP_LOCAL(MAX_NO_OF_SEGS),                         AAD1F304.92     
     &       LAST_POINT,                                                   RAD_CTL1.138    
     &       FIRST_POINT_SAL,                                              ARE2F404.94     
     &       LAND1,      ! First land point to be processed                ABX1F405.117    
     &       LAND_PTS,   ! Number of land points to be processed           ABX1F405.118    
     &       I,J,L,N,                                                      ARE2F404.95     
     &       ROW,                                                          RAD_CTL1.140    
     &      MIN_TROP, MAX_TROP,                                            AWI1F402.5      
     &       POINT,                                                        RAD_CTL1.141    
     &       POINTS,                                                       RAD_CTL1.142    
     &       STEP,                                                         RAD_CTL1.143    
     &       N_SW_SEGMENTS,                                                RAD_CTL1.144    
     &       DAYLIGHT_POINTS,                                              RAD_CTL1.145    
     &       D1236_DIM,                                                    AWI1F404.14     
     &       SEG_START,                                                    RAD_CTL1.146    
     &       LIT_POINTS,                                                   RAD_CTL1.147    
     &       RAD_ARRAY_SIZE,                                               ADB1F400.66     
!              ACTUAL SIZE OF RADIATIVE ARRAY                              ADB1F400.67     
     &       START_POINT,                                                  RAD_CTL1.148    
     &       SEG_POINTS,SP_LOCAL(MAX_NO_OF_SEGS),                          AAD1F304.93     
     &       LEN,                                                          RAD_CTL1.150    
     &       NFTSWAP,                                                      RAD_CTL1.151    
     &       LEN_IO,                                                       RAD_CTL1.152    
     &       BAND,                                                         RAD_CTL1.153    
     &       OFFSET,                                                       RAD_CTL1.154    
     &       LEVEL                                                         RAD_CTL1.155    
     &      ,IM_IDENT      ! internal model identifier                     GRB4F305.346    
     &      ,IM_INDEX      ! internal model index for STASH arrays         GRB4F305.347    
     &    , FIRST_POINT_SULPC     ! First point of array of sulphate       ADB1F402.586    
     &  ,FIRST_POINT_SOOT                                                  ALR3F405.22     
                                  ! passed to subroutine                   ADB1F402.587    
     &    , FIRST_POINT_CO2       ! First point of array of CO2            ACN2F405.48     
     &    , GLOBAL_CLOUD_TOP      ! Global topmost cloudy layer            ADB1F402.588    
     &                            ! (for 3A-radiation)                     ADB1F402.589    
     &    , INFO                  ! Return Code from GCOM routines.        ADR3F403.3      
                                                                           RAD_CTL1.156    
      REAL                                                                 RAD_CTL1.157    
     &       SINDEC,      ! Sin of the solar declination                   RAD_CTL1.158    
     &       SCS,         ! Solar constant scaling factor                  RAD_CTL1.159    
     &       SULPH_C(NSULPAT),                                             AWI1F403.145    
!     ! Coefficients of sulphate loading patterns if L_H2_SULPH.           AWI1F403.146    
     &       TIME,                                                         RAD_CTL1.160    
     &       TIMESTEP,                                                     RAD_CTL1.161    
     &       A_IO                                                          RAD_CTL1.162    
!                                                                          ADB1F400.70     
      INTEGER                                                              ADB1F400.71     
     &       NPDWD_CL_PROFILE                                              ADB2F404.912    
!               Dimension for work space in radiation                      ADB2F404.913    
!                                                                          ADB2F404.914    
!                                                                          ADB2F404.915    
!     Declaration of spectral files for 3A-radiation.                      ADB2F404.916    
*CALL SWSPDL3A                                                             ADB2F404.917    
*CALL LWSPDL3A                                                             ADB2F404.918    
!     Common blocks of spectral data for 3A-radiation.                     ADB2F404.919    
*CALL SWSPCM3A                                                             ADB2F404.920    
*CALL LWSPCM3A                                                             ADB2F404.921    
!     Declaration of algorithmic options for 3A-radiation.                 ADB2F404.922    
*CALL SWOPT3A                                                              ADB2F404.923    
*CALL LWOPT3A                                                              ADB2F404.924    
!     Common blocks of algorithmic options for 3A-radiation.               ADB2F404.925    
*CALL SWCOPT3A                                                             ADB2F404.926    
*CALL LWCOPT3A                                                             ADB2F404.927    
!                                                                          ADB2F404.928    
!                                                                          ADB2F404.929    
                                                                           ADB1F400.88     
CL--- SECTION 0 --- INITIALISATION --------------------                    RAD_CTL1.164    
                                                                           GRB4F305.348    
C  Set up internal model identifier and STASH index                        GRB4F305.349    
      im_ident = atmos_im                                                  GRB4F305.350    
      im_index = internal_model_index(im_ident)                            GRB4F305.351    
                                                                           RAD_CTL1.165    
      FIRST_POINT = START_POINT_NO_HALO                                    APBBF401.5      
      LAST_POINT  = END_P_POINT_NO_HALO                                    APBBF401.6      
      POINTS      = LAST_POINT-FIRST_POINT+1                               APBBF401.7      
      JS          = FIRST_POINT-1                                          APBBF401.8      
                                                                           RAD_CTL1.171    
!  Set land points to be processed                                         ABX1F405.119    
      LAND1 = 1                                                            ABX1F405.120    
      LAND_PTS = 0                                                         ABX1F405.121    
      DO L=1,LAND_FIELD                                                    ABX1F405.122    
        IF ( LAND_LIST(L) .LT. FIRST_POINT ) THEN                          ABX1F405.123    
          LAND1 = LAND1 + 1                                                ABX1F405.124    
        ELSEIF ( LAND_LIST(L) .LE. FIRST_POINT+POINTS-1 ) THEN             ABX1F405.125    
          LAND_PTS = LAND_PTS + 1                                          ABX1F405.126    
        ENDIF                                                              ABX1F405.127    
      ENDDO                                                                ABX1F405.128    
                                                                           ABX1F405.129    
C  SAL arrays not accessed (removes bounds checking messages)              ARE2F404.96     
                                                                           ARE2F404.97     
      IF( L_SNOW_ALBEDO ) THEN                                             ARE2F404.98     
         FIRST_POINT_SAL = FIRST_POINT                                     ARE2F404.99     
      ELSE                                                                 ARE2F404.100    
         FIRST_POINT_SAL = 1                                               ARE2F404.101    
      ENDIF                                                                ARE2F404.102    
                                                                           ARE2F404.103    
C  INITIALISE OUTPUT ARRAYS TO ZERO                                        RAD_CTL1.172    
                                                                           RAD_CTL1.173    
      DO I=1,P_FIELD                                                       RAD_CTL1.174    
        SURF_RADFLUX(I) = 0.0                                              RAD_CTL1.175    
        RAD_NO_SNOW(I) = 0.0                                               ARE2F404.104    
        RAD_SNOW(I) = 0.0                                                  ARE2F404.105    
        PHOTOSYNTH_ACT_RAD(I) = 0.0                                        AJS1F401.961    
      END DO                                                               RAD_CTL1.176    
      DO I=1,STASHLEN                                                      RAD_CTL1.177    
        STASHWORK(I)=0.0                                                   RAD_CTL1.178    
      END DO                                                               RAD_CTL1.179    
                                                                           RAD_CTL1.180    
CL 0.0 Set the polar points in PHOTOSYNTH_ACT_RAD to MDI                   AJS1F401.962    
                                                                           AJS1F401.963    
      DO I=1,FIRST_POINT-1                                                 AJS1F401.964    
        PHOTOSYNTH_ACT_RAD(I) = RMDI                                       AJS1F401.965    
      ENDDO                                                                AJS1F401.966    
                                                                           AJS1F401.967    
      DO I=LAST_POINT+1,P_FIELD                                            AJS1F401.968    
        PHOTOSYNTH_ACT_RAD(I) = RMDI                                       AJS1F401.969    
      ENDDO                                                                AJS1F401.970    
                                                                           AJS1F401.971    
CL 0.1 Calculate mixing ratio of well-mixed greenhouse gases from the      AWI1F403.147    
CL             scenarios (unless they are constant).                       AWI1F403.148    
                                                                           AWI1F403.149    
      IF ( CLIM_FCG_NYEARS(S_CO2) .GT. 0 ) THEN  !  CO2 level calculated   AWI1F403.150    
                                                                           AWI1F403.151    
        IF ( LTIMER ) THEN                                                 AWI1F403.152    
          CALL TIMER ('GAS_CALC', 3)                                       AWI1F403.153    
        END IF                                                             AWI1F403.154    
                                                                           AWI1F403.155    
        CALL GAS_CALC ( CO2_MMR,                                           AWI1F403.156    
     &       CLIM_FCG_NYEARS(S_CO2),  CLIM_FCG_YEARS(1,S_CO2),             AWI1F403.157    
     &       CLIM_FCG_LEVLS(1,S_CO2), CLIM_FCG_RATES(1,S_CO2),             AWI1F403.158    
     &       LENSCEN, ICODE, CMESSAGE)                                     AWI1F403.159    
                                                                           AWI1F403.160    
        IF ( LTIMER ) THEN                                                 AWI1F403.161    
          CALL TIMER ('GAS_CALC', 4)                                       AWI1F403.162    
        END IF                                                             AWI1F403.163    
                                                                           AWI1F403.164    
        IF ( ICODE .NE. 0 ) RETURN                                         AWI1F403.165    
                                                                           AWI1F403.166    
      ENDIF                                                                AWI1F403.167    
                                                                           AWI1F403.168    
      IF ( CLIM_FCG_NYEARS(S_N2O) .GT. 0 ) THEN  !  N2O level calculated   AWI1F403.169    
                                                                           AWI1F403.170    
        IF ( LTIMER ) THEN                                                 AWI1F403.171    
          CALL TIMER ('GAS_CALC', 3)                                       AWI1F403.172    
        END IF                                                             AWI1F403.173    
                                                                           AWI1F403.174    
        CALL GAS_CALC ( N2OMMR,                                            AWI1F403.175    
     &        CLIM_FCG_NYEARS(S_N2O),  CLIM_FCG_YEARS(1,S_N2O),            AWI1F403.176    
     &        CLIM_FCG_LEVLS(1,S_N2O), CLIM_FCG_RATES(1,S_N2O),            AWI1F403.177    
     &        LENSCEN, ICODE, CMESSAGE)                                    AWI1F403.178    
                                                                           AWI1F403.179    
        IF ( LTIMER ) THEN                                                 AWI1F403.180    
          CALL TIMER ('GAS_CALC', 4)                                       AWI1F403.181    
        END IF                                                             AWI1F403.182    
                                                                           AWI1F403.183    
        IF ( ICODE .NE. 0 ) RETURN                                         AWI1F403.184    
                                                                           AWI1F403.185    
      ENDIF                                                                AWI1F403.186    
                                                                           AWI1F403.187    
      IF ( CLIM_FCG_NYEARS(S_CH4) .GT. 0 ) THEN  !  CH4 level calculated   AWI1F403.188    
                                                                           AWI1F403.189    
        IF ( LTIMER ) THEN                                                 AWI1F403.190    
          CALL TIMER ('GAS_CALC', 3)                                       AWI1F403.191    
        END IF                                                             AWI1F403.192    
                                                                           AWI1F403.193    
        CALL GAS_CALC ( CH4MMR,                                            AWI1F403.194    
     &        CLIM_FCG_NYEARS(S_CH4),  CLIM_FCG_YEARS(1,S_CH4),            AWI1F403.195    
     &        CLIM_FCG_LEVLS(1,S_CH4), CLIM_FCG_RATES(1,S_CH4),            AWI1F403.196    
     &        LENSCEN, ICODE, CMESSAGE)                                    AWI1F403.197    
                                                                           AWI1F403.198    
        IF ( LTIMER ) THEN                                                 AWI1F403.199    
          CALL TIMER ('GAS_CALC', 4)                                       AWI1F403.200    
        END IF                                                             AWI1F403.201    
                                                                           AWI1F403.202    
        IF ( ICODE .NE. 0 ) RETURN                                         AWI1F403.203    
                                                                           AWI1F403.204    
      ENDIF                                                                AWI1F403.205    
                                                                           AWI1F403.206    
      IF ( CLIM_FCG_NYEARS(S_CFC11) .GT. 0 ) THEN   !  Same for "CFC11"    AWI1F403.207    
                                                                           AWI1F403.208    
        IF ( LTIMER ) THEN                                                 AWI1F403.209    
          CALL TIMER ('GAS_CALC', 3)                                       AWI1F403.210    
        END IF                                                             AWI1F403.211    
                                                                           AWI1F403.212    
        CALL GAS_CALC ( C11MMR,                                            AWI1F403.213    
     &        CLIM_FCG_NYEARS(S_CFC11),  CLIM_FCG_YEARS(1,S_CFC11),        AWI1F403.214    
     &        CLIM_FCG_LEVLS(1,S_CFC11), CLIM_FCG_RATES(1,S_CFC11),        AWI1F403.215    
     &        LENSCEN, ICODE, CMESSAGE)                                    AWI1F403.216    
                                                                           AWI1F403.217    
        IF ( LTIMER ) THEN                                                 AWI1F403.218    
          CALL TIMER ('GAS_CALC', 4)                                       AWI1F403.219    
        END IF                                                             AWI1F403.220    
                                                                           AWI1F403.221    
        IF ( ICODE .NE. 0 ) RETURN                                         AWI1F403.222    
                                                                           AWI1F403.223    
      ENDIF                                                                AWI1F403.224    
                                                                           AWI1F403.225    
      IF ( CLIM_FCG_NYEARS(S_CFC12) .GT. 0 ) THEN   !  Same for "CFC12"    AWI1F403.226    
                                                                           AWI1F403.227    
        IF ( LTIMER ) THEN                                                 AWI1F403.228    
          CALL TIMER ('GAS_CALC', 3)                                       AWI1F403.229    
        END IF                                                             AWI1F403.230    
                                                                           AWI1F403.231    
        CALL GAS_CALC ( C12MMR,                                            AWI1F403.232    
     &        CLIM_FCG_NYEARS(S_CFC12),  CLIM_FCG_YEARS(1,S_CFC12),        AWI1F403.233    
     &        CLIM_FCG_LEVLS(1,S_CFC12), CLIM_FCG_RATES(1,S_CFC12),        AWI1F403.234    
     &        LENSCEN, ICODE, CMESSAGE)                                    AWI1F403.235    
                                                                           AWI1F403.236    
        IF ( LTIMER ) THEN                                                 AWI1F403.237    
          CALL TIMER ('GAS_CALC', 4)                                       AWI1F403.238    
        END IF                                                             AWI1F403.239    
                                                                           AWI1F403.240    
        IF ( ICODE .NE. 0 ) RETURN                                         AWI1F403.241    
                                                                           AWI1F403.242    
      ENDIF                                                                AWI1F403.243    
                                                                           AWI1F403.244    
      IF ( CLIM_FCG_NYEARS(S_CFC113) .GT. 0 ) THEN  !  Same for CFC113     ADB1F405.466    
                                                                           ADB1F405.467    
        IF ( LTIMER ) THEN                                                 ADB1F405.468    
          CALL TIMER ('GAS_CALC', 3)                                       ADB1F405.469    
        END IF                                                             ADB1F405.470    
                                                                           ADB1F405.471    
        CALL GAS_CALC ( C113MMR,                                           ADB1F405.472    
     &        CLIM_FCG_NYEARS(S_CFC113),  CLIM_FCG_YEARS(1,S_CFC113),      ADB1F405.473    
     &        CLIM_FCG_LEVLS(1,S_CFC113), CLIM_FCG_RATES(1,S_CFC113),      ADB1F405.474    
     &        LENSCEN, ICODE, CMESSAGE)                                    ADB1F405.475    
                                                                           ADB1F405.476    
        IF ( LTIMER ) THEN                                                 ADB1F405.477    
          CALL TIMER ('GAS_CALC', 4)                                       ADB1F405.478    
        END IF                                                             ADB1F405.479    
                                                                           ADB1F405.480    
        IF ( ICODE .NE. 0 ) RETURN                                         ADB1F405.481    
                                                                           ADB1F405.482    
      ENDIF                                                                ADB1F405.483    
                                                                           ADB1F405.484    
      IF ( CLIM_FCG_NYEARS(S_HCFC22) .GT. 0 ) THEN  !  Same for HCFC22     ADB1F405.485    
                                                                           ADB1F405.486    
        IF ( LTIMER ) THEN                                                 ADB1F405.487    
          CALL TIMER ('GAS_CALC', 3)                                       ADB1F405.488    
        END IF                                                             ADB1F405.489    
                                                                           ADB1F405.490    
        CALL GAS_CALC ( HCFC22MMR,                                         ADB1F405.491    
     &        CLIM_FCG_NYEARS(S_HCFC22),  CLIM_FCG_YEARS(1,S_HCFC22),      ADB1F405.492    
     &        CLIM_FCG_LEVLS(1,S_HCFC22), CLIM_FCG_RATES(1,S_HCFC22),      ADB1F405.493    
     &        LENSCEN, ICODE, CMESSAGE)                                    ADB1F405.494    
                                                                           ADB1F405.495    
        IF ( LTIMER ) THEN                                                 ADB1F405.496    
          CALL TIMER ('GAS_CALC', 4)                                       ADB1F405.497    
        END IF                                                             ADB1F405.498    
                                                                           ADB1F405.499    
        IF ( ICODE .NE. 0 ) RETURN                                         ADB1F405.500    
                                                                           ADB1F405.501    
      ENDIF                                                                ADB1F405.502    
                                                                           ADB1F405.503    
      IF ( CLIM_FCG_NYEARS(S_HFC125) .GT. 0 ) THEN  !  Same for HFC125     ADB1F405.504    
                                                                           ADB1F405.505    
        IF ( LTIMER ) THEN                                                 ADB1F405.506    
          CALL TIMER ('GAS_CALC', 3)                                       ADB1F405.507    
        END IF                                                             ADB1F405.508    
                                                                           ADB1F405.509    
        CALL GAS_CALC ( HFC125MMR,                                         ADB1F405.510    
     &        CLIM_FCG_NYEARS(S_HFC125),  CLIM_FCG_YEARS(1,S_HFC125),      ADB1F405.511    
     &        CLIM_FCG_LEVLS(1,S_HFC125), CLIM_FCG_RATES(1,S_HFC125),      ADB1F405.512    
     &        LENSCEN, ICODE, CMESSAGE)                                    ADB1F405.513    
                                                                           ADB1F405.514    
        IF ( LTIMER ) THEN                                                 ADB1F405.515    
          CALL TIMER ('GAS_CALC', 4)                                       ADB1F405.516    
        END IF                                                             ADB1F405.517    
                                                                           ADB1F405.518    
        IF ( ICODE .NE. 0 ) RETURN                                         ADB1F405.519    
                                                                           ADB1F405.520    
      ENDIF                                                                ADB1F405.521    
                                                                           ADB1F405.522    
      IF ( CLIM_FCG_NYEARS(S_HFC134A) .GT. 0 ) THEN  !  Same for HFC134A   ADB1F405.523    
                                                                           ADB1F405.524    
        IF ( LTIMER ) THEN                                                 ADB1F405.525    
          CALL TIMER ('GAS_CALC', 3)                                       ADB1F405.526    
        END IF                                                             ADB1F405.527    
                                                                           ADB1F405.528    
        CALL GAS_CALC ( HFC134AMMR,                                        ADB1F405.529    
     &        CLIM_FCG_NYEARS(S_HFC134A),  CLIM_FCG_YEARS(1,S_HFC134A),    ADB1F405.530    
     &        CLIM_FCG_LEVLS(1,S_HFC134A), CLIM_FCG_RATES(1,S_HFC134A),    ADB1F405.531    
     &        LENSCEN, ICODE, CMESSAGE)                                    ADB1F405.532    
                                                                           ADB1F405.533    
        IF ( LTIMER ) THEN                                                 ADB1F405.534    
          CALL TIMER ('GAS_CALC', 4)                                       ADB1F405.535    
        END IF                                                             ADB1F405.536    
                                                                           ADB1F405.537    
        IF ( ICODE .NE. 0 ) RETURN                                         ADB1F405.538    
                                                                           ADB1F405.539    
      ENDIF                                                                ADB1F405.540    
                                                                           ADB1F405.541    
                                                                           RAD_CTL1.188    
CL 0.2 IF(LEXPAND_OZONE)=.TRUE. expand ozone from zonal mean to 3-d        RAD_CTL1.189    
CL field in OZONE, otherwise copy into OZONE                               RAD_CTL1.190    
                                                                           RAD_CTL1.191    
      DO LEVEL=1,OZONE_LEVELS                                              RAD_CTL1.192    
        IF(.NOT.LEXPAND_OZONE) THEN                                        RAD_CTL1.193    
                                                                           RAD_CTL1.194    
          DO I=1,P_FIELD                                                   RAD_CTL1.195    
            OZONE_1(I,LEVEL)=D1(JOZONE(LEVEL)+I-1)                         GDR3F305.161    
          END DO                                                           RAD_CTL1.197    
                                                                           RAD_CTL1.198    
        ELSE                                                               RAD_CTL1.199    
                                                                           RAD_CTL1.200    
          DO ROW=1,P_ROWS                                                  RAD_CTL1.201    
            DO I=1,ROW_LENGTH                                              RAD_CTL1.202    
              POINT=I+(ROW-1)*ROW_LENGTH                                   RAD_CTL1.203    
              OZONE_1(POINT,LEVEL)=D1(JOZONE(LEVEL)+ROW-1)                 GDR3F305.162    
            END DO                                                         RAD_CTL1.205    
          END DO                                                           RAD_CTL1.206    
                                                                           RAD_CTL1.207    
        ENDIF                                                              RAD_CTL1.208    
      END DO                                                               RAD_CTL1.209    
!                                                                          ADB1F401.781    
!                                                                          ADB1F401.782    
!     Code for the Sulphur Cycle. We multiply by 4.125 to convert from     ADB1F401.783    
!     mass mixing ratio of sulphur atoms to mass mixing ratio of           ADB1F401.784    
!     ammonium sulphate.                                                   ADB1F401.785    
      IF (L_USE_SULPC_DIRECT .OR. L_USE_SULPC_INDIRECT_SW                  AAJ1F404.9      
     &                       .OR. L_USE_SULPC_INDIRECT_LW) THEN            AAJ1F404.10     
        IF (SULP_DIM1.EQ.P_FIELD .AND. SULP_DIM2.EQ.P_LEVELS)  THEN        ADB1F401.787    
          DO LEVEL=1, P_LEVELS                                             ADB1F401.788    
           DO I=1, P_FIELD                                                 ADB1F401.789    
           POINT=I+(LEVEL-1)*P_FIELDDA                                     ADB1F401.790    
           ACCUM_SULPHATE(I, LEVEL)=D1(JSO4_ACCU(1)+POINT-1)*4.125         ADB1F401.791    
           AITKEN_SULPHATE(I, LEVEL)=D1(JSO4_AITKEN(1)+POINT-1)*4.125      ADB1F401.792    
           DISS_SULPHATE(I, LEVEL)=D1(JSO4_DISS(1)+POINT-1)*4.125          ADB2F404.930    
           ENDDO                                                           ADB1F401.793    
          ENDDO                                                            ADB1F401.794    
        ELSE                                                               ADB1F401.795    
         WRITE(6,*)                                                        ADB1F401.796    
     &       'SULP_DIM INCONSISTENT WITH L_USE_SULPC, EXIT RAD_CTL'        ADB1F401.797    
         ICODE = 1                                                         ADB1F401.798    
         RETURN                                                            ADB1F401.799    
        ENDIF                                                              ADB1F401.800    
      ENDIF                                                                ADB1F401.801    
!                                                                          ACN2F405.49     
!     Code for the interactive Carbon Cycle.                               ACN2F405.50     
!                                                                          ACN2F405.51     
      IF (L_CO2_INTERACTIVE) THEN                                          ACN2F405.52     
        IF (CO2_DIM1.EQ.P_FIELD .AND. CO2_DIM2.EQ.P_LEVELS)  THEN          ACN2F405.53     
          DO LEVEL=1, P_LEVELS                                             ACN2F405.54     
           DO I=1, P_FIELD                                                 ACN2F405.55     
             POINT=I+(LEVEL-1)*P_FIELDDA                                   ACN2F405.56     
             CO2_3D(I, LEVEL) = D1(JCO2(1)+POINT-1)                        ACN2F405.57     
           ENDDO                                                           ACN2F405.58     
          ENDDO                                                            ACN2F405.59     
        ELSE                                                               ACN2F405.60     
         WRITE(6,*)                                                        ACN2F405.61     
     &       'CO2_DIM INCONSISTENT WITH L_CO2_INTERACTIVE, EXIT RAD_CTL'   ACN2F405.62     
         CMESSAGE =                                                        ACN2F405.63     
     &       'ERROR RAD_CTL: CO2_DIM1,2 SET WRONGLY FOR CARBON CYCLE'      ACN2F405.64     
         ICODE = 1                                                         ACN2F405.65     
         RETURN                                                            ACN2F405.66     
        ENDIF                                                              ACN2F405.67     
      ELSE                                                                 ACN2F405.68     
!  set an arbitrary value                                                  ACN2F405.69     
        CO2_3D(1,1) = 0.0                                                  ACN2F405.70     
      ENDIF                                                                ACN2F405.71     
!                                                                          AYY1F404.250    
      IF (L_USE_SOOT_DIRECT) THEN                                          ALR3F405.25     
        IF (SOOT_DIM1.EQ.P_FIELD .AND. SOOT_DIM2.EQ.P_LEVELS)  THEN        ALR3F405.26     
          DO LEVEL=1, P_LEVELS                                             ALR3F405.27     
           DO I=1, P_FIELD                                                 ALR3F405.28     
           POINT=I+(LEVEL-1)*P_FIELDDA                                     ALR3F405.29     
           FRESH_SOOT(I, LEVEL)                                            ALR3F405.30     
     &       =D1(JSOOT_NEW(1)+POINT-1)                                     ALR3F405.31     
           AGED_SOOT(I, LEVEL)                                             ALR3F405.32     
     &       =D1(JSOOT_AGD(1)+POINT-1)                                     ALR3F405.33     
           ENDDO                                                           ALR3F405.34     
          ENDDO                                                            ALR3F405.35     
        ELSE                                                               ALR3F405.36     
         CMESSAGE='Failure with soot. See output.'                         ALR3F405.37     
         ICODE = 1                                                         ALR3F405.38     
         WRITE(*,*)                                                        ALR3F405.39     
     &   'SOOT_DIM1 and SOOT_DIM2 must be equal to P_FIELD'                ALR3F405.40     
     &   //'and P_LEVELS to study soot direct radiative effects.'          ALR3F405.41     
         WRITE(*,*) 'Current values: '                                     ALR3F405.42     
         write(*,*) 'SOOT_DIM1: ',SOOT_DIM1                                ALR3F405.43     
         write(*,*) 'SOOT_DIM2: ',SOOT_DIM2                                ALR3F405.44     
         write(*,*) 'P_FIELD, P_LEVELS: ', P_FIELD, P_LEVELS               ALR3F405.45     
         write(*,*) 'L_USE_SOOT_DIRECT: ',L_USE_SOOT_DIRECT                ALR3F405.46     
         RETURN                                                            ALR3F405.47     
        ENDIF                                                              ALR3F405.48     
      END IF                                                               ALR3F405.49     
                                                                           ALR3F405.50     
!    Partitioning of ice and water cloud needs to be consistent with       AYY1F404.251    
!    the large-scale precipitation scheme (Section 4) used. For new        AYY1F404.252    
!    precipitation microphysics scheme use input qCL and qCF               ADM0F405.304    
!    directly: for earlier schemes partition (qCL+qCF) using FOCWWIL.      AYY1F404.254    
!    A. C. Bushell 12/ 3/ 1997                                             AYY1F404.255    
!                                                                          AYY1F404.256    
      L_CLOUD_WATER_PARTITION=L_LSPICE                                     AYY1F404.257    
!                                                                          AYY1F404.258    
                                                                           RAD_CTL1.210    
CL 0.3 Find tropopause index, needed if climatological aerosols are to     AWI1F402.6      
CL     be used, to decide where the tropospheric aerosol stops and the     AWI1F402.7      
CL     stratospheric starts.  The index is also required for calculating   ADB2F404.931    
CL     fluxes at the tropopause which are available only under option      ADB2F404.932    
CL     03A in the SW or LW.                                                ADB2F404.933    
                                                                           AWI1F402.10     
      IF ( L_CLIMAT_AEROSOL  .OR.                                          ADB2F404.934    
     &     ( SF(237,1) .OR. SF(238,1) ) .OR.                               ADB2F404.935    
     &     ( SF(237,2) .OR. SF(238,2) ) ) THEN                             ADB2F404.936    
C       !  Find the lowest layer boundaries above eta=.7 & .05, to         AWI1F402.12     
C       !    use as limits for the tropopause.                             AWI1F402.13     
C       !  (The latter is the same constant as used within TROPIN, but     AWI1F402.14     
C       !    applied half a level more restrictively, and in terms of      AWI1F402.15     
C       !    eta rather than pressure/PREF - in practice this will         AWI1F402.16     
C       !    make no difference for standard levels as they will be        AWI1F402.17     
C       !    pure pressure levels there.  The former is apparently         AWI1F402.18     
C       !    more generous, but is necessary to find a tropopause          AWI1F402.19     
C       !    around 40 kPa with surface pressure less than 60 kPa,         AWI1F402.20     
C       !    as is perfectly plausible in the Antarctic winter.)           AWI1F402.21     
        DO LEVEL=P_LEVELS, 1, -1                                           AWI1F402.22     
          IF ( AKH(LEVEL)/PREF+BKH(LEVEL) .LT. .7 )  MIN_TROP = LEVEL      AWI1F402.23     
          IF ( AKH(LEVEL)/PREF+BKH(LEVEL) .LT. .05 ) MAX_TROP = LEVEL      AWI1F402.24     
        ENDDO                                                              AWI1F402.25     
        CALL TROPIN (D1(JPSTAR), D1(JTHETA(1)), D1(JP_EXNER(1)),           AWI1F402.26     
     &       TRINDX, P_FIELD, P_FIELD, ROW_LENGTH, P_LEVELS,               AWI1F402.27     
     &       MIN_TROP, MAX_TROP, AKH, BKH,                                 AWI1F402.28     
*IF DEF,GLOBAL,AND,-DEF,MPP                                                AWI1F402.29     
     &       .TRUE. )                                                      AWI1F402.30     
*ELSE                                                                      AWI1F402.31     
     &       .FALSE. )                                                     AWI1F402.32     
*ENDIF                                                                     AWI1F402.33     
      ENDIF                                                                AWI1F402.34     
!                                                                          ADB2F404.937    
!                                                                          ADB2F404.938    
        IF ( (H_SECT(1).EQ."03A").OR.(H_SECT(2).EQ."03A") ) THEN           ADB2F404.939    
!                                                                          ADB2F404.940    
!        To obtain reproducible results independent of the                 ADB2F404.941    
!        decomposition of the domain used on an MPP machine a global       ADB2F404.942    
!        value for the topmost cloudy layer is used. The two polar         ADB2F404.943    
!        rows are not searched. The use of a hardwired flag means that     ADB2F404.944    
!        the original faster code can be restored by setting               ADB2F404.945    
!        L_GLOBAL_CLOUD_TOP to .FALSE. as a modification: the results      ADB2F404.946    
!        will then not be independent of the number of segments or the     ADB2F404.947    
!        configuration of processors used. This is required if option      ADB2F404.948    
!        3A for the radiation is used in either section.                   ADB2F404.949    
!                                                                          ADB2F404.950    
         L_GLOBAL_CLOUD_TOP=.TRUE.                                         ADB2F404.951    
         IF (L_GLOBAL_CLOUD_TOP) THEN                                      ADB2F404.952    
            CALL R2_GLOBAL_CLOUD_TOP(POINTS, P_LEVELS, CLOUD_LEVELS        ADB2F404.953    
!                       Convective cloud Fields                            ADB2F404.954    
     &         , D1(JCCA(1)+FIRST_POINT-1), D1(JCCT+FIRST_POINT-1)         ADB2F404.955    
!                          Layer cloud Fields                              ADB2F404.956    
     &         , AREA_CLOUD_FRACTION(FIRST_POINT, 1)                       ASK1F405.266    
!                       Calculated top of cloud fields.                    ADB2F404.958    
     &         , GLOBAL_CLOUD_TOP                                          ADB2F404.959    
!                       Size of arrays                                     ADB2F404.960    
     &         , P_FIELDDA                                                 ADB2F404.961    
     &         )                                                           ADB2F404.962    
                                                                           AWI1F402.35     
*IF DEF,MPP                                                                ADB2F404.963    
!        GLOBAL_CLOUD_TOP returned from R2_GLOBAL_CLOUD_TOP is             ADB2F404.964    
!        the cloud top for the local domain. Derive a Global               ADB2F404.965    
!        value from the local values.                                      ADB2F404.966    
            CALL GC_IMAX(1,NPROC,INFO,GLOBAL_CLOUD_TOP)                    ADB2F404.967    
                                                                           ADB2F404.968    
*ENDIF                                                                     ADB2F404.969    
         ENDIF                                                             ADB2F404.970    
!                                                                          ADB2F404.971    
        ENDIF                                                              ADB2F404.972    
!                                                                          ADB2F404.973    
!                                                                          ADB2F404.974    
CL--- SECTION 1 --- SHORTWAVE RADIATION ---------------                    RAD_CTL1.211    
CL 1.0 If not short wave radiation timestep:                               RAD_CTL1.212    
                                                                           RAD_CTL1.213    
      IF(.NOT.L_SW_RADIATE) THEN                                           RAD_CTL1.214    
                                                                           RAD_CTL1.215    
*IF -DEF,FRADIO                                                            GGH3F401.29     
CL Read in SW radiation increments, including net surface SW in band 1,    ARE2F404.106    
CL and surface albedo                                                      ARE2F404.107    
        LEN=(P_FIELDDA*(P_LEVELS+3)+511)/512*512  !no words for SW incs    ARE2F404.108    
                                                                           RAD_CTL1.219    
        NFTSWAP=16                                                         RAD_CTL1.220    
        CALL SETPOS(NFTSWAP,0,ICODE)                                       GTD0F400.116    
        CALL BUFFIN(NFTSWAP,RADINCS,LEN,LEN_IO,A_IO)                       RAD_CTL1.222    
                                                                           RAD_CTL1.223    
C Error check                                                              RAD_CTL1.224    
                                                                           RAD_CTL1.225    
        IF(A_IO.NE.-1.0.OR.LEN_IO.NE.(LEN)) THEN                           RAD_CTL1.226    
          CMESSAGE=' RAD_CTL :Paging IO Error '                            RAD_CTL1.227    
          ICODE=1                                                          RAD_CTL1.228    
          RETURN                                                           RAD_CTL1.229    
        END IF                                                             RAD_CTL1.230    
*ENDIF                                                                     RAD_CTL1.231    
                                                                           RAD_CTL1.232    
      END IF                                                               RAD_CTL1.233    
                                                                           RAD_CTL1.234    
CL 1.1  Shortwave-related calculations                                     RAD_CTL1.235    
                                                                           RAD_CTL1.236    
CL 1.1.1 Calculates sine of the solar declination and the scaling          RAD_CTL1.237    
C       factor for solar intensity from the day number and year.           RAD_CTL1.238    
                                                                           RAD_CTL1.239    
        IF(LTIMER) THEN                                                    RAD_CTL1.240    
          CALL TIMER('SOLPOS  ',3)                                         RAD_CTL1.241    
        END IF                                                             RAD_CTL1.242    
                                                                           RAD_CTL1.243    
C       ! HADCM2 physics must continue to use the wrong solar time.        GHM5F405.28     
                                                                           GHM5F405.29     
                                                                           GHM5F405.30     
        IF ( H_SECT(1) .EQ. '02B' ) THEN                                   GHM5F405.31     
           CALL SOLPOS (I_DAY_NUMBER, I_YEAR, SINDEC, SCS, LCAL360)        GHM5F405.32     
         ELSE                                                              GHM5F405.33     
           CALL SOLPOS (PREVIOUS_TIME(7), PREVIOUS_TIME(1), SINDEC, SCS,   GHM5F405.34     
     &                    LCAL360)                                         AWI1F400.4      
        ENDIF                                                              GHM5F405.35     
                                                                           RAD_CTL1.245    
        IF(LTIMER) THEN                                                    RAD_CTL1.246    
          CALL TIMER('SOLPOS  ',4)                                         RAD_CTL1.247    
        END IF                                                             RAD_CTL1.248    
                                                                           RAD_CTL1.249    
CL 1.1.2 Calculate day fraction and the zenith angle for each grid point   RAD_CTL1.250    
                                                                           RAD_CTL1.251    
        TIMESTEP=A_SW_RADSTEP*SECS_PER_STEPim(atmos_im)                    ADR1F305.120    
                                                                           RAD_CTL1.253    
C calculate sine of true latitude from Coriolis component F3               RAD_CTL1.254    
                                                                           RAD_CTL1.255    
        CALL UV_TO_P(F3(FIRST_VALID_PT),                                   APBBF401.9      
     &               SIN_TRUE_LATITUDE(FIRST_VALID_PT+ROW_LENGTH),         APBBF401.10     
     &               U_FIELD-FIRST_VALID_PT+1,                             APBBF401.11     
     &               P_FIELD-(FIRST_VALID_PT+ROW_LENGTH)+1,                APBBF401.12     
     &               ROW_LENGTH,upd_P_ROWS+1)                              APBBF401.13     
                                                                           APBBF401.14     
        DO I=FIRST_POINT,LAST_POINT                                        RAD_CTL1.258    
          SIN_TRUE_LATITUDE(I)=SIN_TRUE_LATITUDE(I)*0.5/OMEGA              RAD_CTL1.259    
        END DO                                                             RAD_CTL1.260    
                                                                           RAD_CTL1.261    
C calculate seconds elapsed since midnight                                 RAD_CTL1.262    
                                                                           RAD_CTL1.263    
        IF ( H_SECT(1) .EQ. '02B' ) THEN                                   GHM5F405.36     
           TIME = REAL ( 3600 * I_HOUR + 60 * I_MINUTE + I_SECOND )        GHM5F405.37     
         ELSE                                                              GHM5F405.38     
           TIME = REAL ( 3600*PREVIOUS_TIME(4) + 60*PREVIOUS_TIME(5)       GHM5F405.39     
     &                                      + PREVIOUS_TIME(6) )           AWI1F400.6      
        ENDIF                                                              GHM5F405.40     
                                                                           RAD_CTL1.265    
CL  Calculations only done on a SW timestep                                RAD_CTL1.266    
                                                                           RAD_CTL1.267    
      IF ( L_SW_RADIATE ) THEN                                             RAD_CTL1.268    
                                                                           RAD_CTL1.269    
        IF(LTIMER) THEN                                                    RAD_CTL1.270    
          CALL TIMER('SOLANG  ',3)                                         RAD_CTL1.271    
        END IF                                                             RAD_CTL1.272    
                                                                           RAD_CTL1.273    
        CALL SOLANG(                                                       RAD_CTL1.274    
C arguments                                                                RAD_CTL1.275    
C input constants                                                          RAD_CTL1.276    
     &     SINDEC,TIME,                                                    RAD_CTL1.277    
     &     TIMESTEP,                                                       RAD_CTL1.278    
C row and column dependent constants                                       RAD_CTL1.279    
     &     SIN_TRUE_LATITUDE(FIRST_POINT),                                 RAD_CTL1.280    
     &     TRUE_LONGITUDE(FIRST_POINT),                                    RAD_CTL1.281    
C size variables                                                           RAD_CTL1.282    
     &     POINTS,                                                         RAD_CTL1.283    
C output fields                                                            RAD_CTL1.284    
     &     DAY_FRACTION(FIRST_POINT),                                      RAD_CTL1.285    
     &     COS_ZENITH_ANGLE(FIRST_POINT))                                  RAD_CTL1.286    
                                                                           RAD_CTL1.287    
        IF(LTIMER) THEN                                                    RAD_CTL1.288    
          CALL TIMER('SOLANG  ',4)                                         RAD_CTL1.289    
        END IF                                                             RAD_CTL1.290    
                                                                           RAD_CTL1.291    
CL      Set rounding-error size values to zero - the criterion depends     RAD_CTL1.292    
CL      on the frequency of full SW calculations because on the physics    RAD_CTL1.293    
CL      timesteps which are not SW timesteps a test has to be done to      RAD_CTL1.294    
CL      avoid using the unset data for such points.                        RAD_CTL1.295    
      DO I=FIRST_POINT,LAST_POINT                                          RAD_CTL1.296    
       IF ( COS_ZENITH_ANGLE(I) * DAY_FRACTION(I)                          RAD_CTL1.297    
     &                            .LT. ( 1.E-10 / A_SW_RADSTEP ) ) THEN    RAD_CTL1.298    
         COS_ZENITH_ANGLE(I)=0.0                                           RAD_CTL1.299    
         DAY_FRACTION(I)=0.0                                               RAD_CTL1.300    
      ENDIF                                                                RAD_CTL1.301    
      ENDDO                                                                RAD_CTL1.302    
CL 1.1.3 Calculate surface albedo                                          RAD_CTL1.303    
C Expand albedo, snow surface temperature and snow cover fraction          ARE2F404.109    
C to all points                                                            ARE2F404.110    
                                                                           RAD_CTL1.305    
CDIR$ IVDEP                                                                RAD_CTL1.306    
! Fujitsu vectorization directive                                          GRB0F405.441    
!OCL NOVREC                                                                GRB0F405.442    
        DO I=1,LAND_FIELD                                                  RAD_CTL1.307    
          STASHWORK(SI(205,1,im_index)+LAND_LIST(I)-1)=D1(JSFA+I-1)        GRB4F305.352    
          STASHWORK(SI(206,1,im_index)+LAND_LIST(I)-1)=D1(JMDSA+I-1)       GRB4F305.353    
        END DO                                                             RAD_CTL1.310    
                                                                           RAD_CTL1.311    
        L_MOSES_II = .FALSE.                                               ARE2F404.111    
        IF ( H_SECT(3) .EQ. '07A' ) THEN                                   ARE2F404.112    
          L_MOSES_II = .TRUE.                                              ARE2F404.113    
          DO I=FIRST_POINT,LAST_POINT                                      ARE2F404.114    
            ALBSNF(I) = 0.                                                 ARE2F404.115    
            TSTAR_SNOW(I) = 0.                                             ARE2F404.116    
            SNOW_FRAC(I) = 0.                                              ARE2F404.117    
          ENDDO                                                            ARE2F404.118    
          DO L=LAND1,LAND1+LAND_PTS-1                                      ABX1F405.130    
            ALBSNF(LAND_LIST(L)) = D1(JSFA+L-1)                            ABX1F405.131    
            TSTAR_SNOW(LAND_LIST(L)) =                                     ABX1F405.132    
     &                          D1(JTSTAR_TYP+(NTYPE-1)*LAND_FIELD+L-1)    ABX1F405.133    
            SNOW_FRAC(LAND_LIST(L)) = SNOW_FRAC_LAND(L)                    ABX1F405.134    
          ENDDO                                                            ABX1F405.135    
        ELSE                                                               ABX1F405.136    
          DO L=LAND1,LAND1+LAND_PTS-1                                      ABX1F405.137    
            TSTAR_SNOW(LAND_LIST(L)) = D1(JTSTAR+LAND_LIST(L)-1)           ABX1F405.138    
            SNOW_FRAC(LAND_LIST(L)) = 1.                                   ABX1F405.139    
          ENDDO                                                            ABX1F405.140    
        ENDIF                                                              ABX1F405.141    
                                                                           ARE2F404.131    
        IF ( H_SECT(1) .EQ. '02B' ) THEN                                   AWI1F403.245    
                                                                           AWI1F403.246    
           IF ( L_H2_SULPH ) THEN                                          AWI1F403.247    
                                                                           AWI1F403.248    
             DO J=1, NSULPAT                                               AWI1F403.249    
                                                                           AWI1F403.250    
               IF ( LTIMER ) THEN                                          AWI1F403.251    
                 CALL TIMER ('GAS_CALC', 3)                                AWI1F403.252    
               END IF                                                      AWI1F403.253    
                                                                           AWI1F403.254    
               CALL GAS_CALC (SULPH_C(J),                                  AWI1F403.255    
     &      CLIM_FCG_NYEARS(S_SO4+J-1),  CLIM_FCG_YEARS(1,S_SO4+J-1),      AWI1F403.256    
     &      CLIM_FCG_LEVLS(1,S_SO4+J-1), CLIM_FCG_RATES(1,S_SO4+J-1),      AWI1F403.257    
     &      LENSCEN, ICODE, CMESSAGE)                                      AWI1F403.258    
                                                                           AWI1F403.259    
               IF ( ICODE .NE. 0 ) RETURN                                  AWI1F403.260    
                                                                           AWI1F403.261    
               IF ( LTIMER ) THEN                                          AWI1F403.262    
                 CALL TIMER ('GAS_CALC', 4)                                AWI1F403.263    
               END IF                                                      AWI1F403.264    
                                                                           AWI1F403.265    
             ENDDO                                                         AWI1F403.266    
                                                                           AWI1F403.267    
             DO POINT=FIRST_POINT-1, LAST_POINT-1                          AWI1F403.268    
               STASHWORK(SI(234,1,im_index)+POINT) =                       AWI1F403.269    
     &                             SULPH_C(1) * D1(JHadCM2_SO4(1)+POINT)   AWI1F403.270    
             ENDDO                                                         AWI1F403.271    
                                                                           AWI1F403.272    
             DO J=2, NSULPAT                                               AWI1F403.273    
               DO POINT=FIRST_POINT-1, LAST_POINT-1                        AWI1F403.274    
                 STASHWORK(SI(234,1,im_index)+POINT) =                     AWI1F403.275    
     &             STASHWORK(SI(234,1,im_index)+POINT) +                   AWI1F403.276    
     &                             SULPH_C(J) * D1(JHadCM2_SO4(J)+POINT)   AWI1F403.277    
               ENDDO                                                       AWI1F403.278    
             ENDDO                                                         AWI1F403.279    
                                                                           AWI1F403.280    
           ENDIF                                                           AWI1F403.281    
                                                                           AWI1F403.282    
           IF ( LTIMER ) THEN                                              AWI1F403.283    
             CALL TIMER ('FTSA    ', 3)                                    AWI1F403.284    
           END IF                                                          AWI1F403.285    
                                                                           AWI1F403.286    
           CALL FTSA (                                                     AWI1F403.287    
C arguments                                                                AWI1F403.288    
C input fields                                                             AWI1F403.289    
     &      D1(JLAND+JS),D1(JICE_FRACTION+JS),D1(JTSTAR+JS),               AWI1F403.290    
     &      STASHWORK(SI(205,1,im_index)+JS),                              AWI1F403.291    
     &      STASHWORK(SI(206,1,im_index)+JS),                              AWI1F403.292    
     &      COS_ZENITH_ANGLE(FIRST_POINT),D1(JSNODEP+JS),                  AWI1F403.293    
C sulphate loading - space always allocated if L_H2_SULPH, not otherwise   AWI1F403.294    
     &      STASHWORK(SI(234,1,im_index)+JS),                              AWI1F403.295    
C max and min sea ice albedo specifications                                AWI1F403.296    
     &      ALPHAC,ALPHAM,DTICE,                                           AWI1F403.297    
C size and control variables - flag to indicate if NO_SULPHATE_ALBEDO      AWI1F403.298    
C should be filled; NLALBS, which is 2 if sulphate is used, 1 if not       AWI1F403.299    
C & then straightforward dimensions:                                       AWI1F403.300    
     &      SF(236,1), NLALBS, NSULPAT, P_FIELD, POINTS,                   AWI1F403.301    
C output arguments                                                         AWI1F403.302    
     &      LAND_AND_ICE_ALBEDO(FIRST_POINT,1),                            AWI1F403.303    
     &      OPEN_SEA_ALBEDO(FIRST_POINT,1),                                AWI1F403.304    
     &      NO_SULPHATE_ALBEDO(FIRST_POINT,1) )                            AWI1F403.305    
                                                                           GHM5F405.3      
         ELSE                                                              GHM5F405.7      
                                                                           GHM5F405.8      
           IF ( LTIMER ) THEN                                              GHM5F405.14     
             CALL TIMER ('FTSA    ', 3)                                    GHM5F405.15     
           END IF                                                          GHM5F405.20     
                                                                           GHM5F405.21     
           CALL FTSA (                                                     GHM5F405.22     
C arguments                                                                RAD_CTL1.317    
C input fields                                                             RAD_CTL1.318    
     &      D1(JLAND+JS),D1(JICE_FRACTION+JS),D1(JTSTAR+JS),               @DYALLOC.3042   
     &      TSTAR_SNOW(FIRST_POINT),SNOW_FRAC(FIRST_POINT),                ARE2F404.132    
     &      STASHWORK(SI(205,1,im_index)+JS),                              GRB4F305.354    
     &      STASHWORK(SI(206,1,im_index)+JS),                              GRB4F305.355    
     &      COS_ZENITH_ANGLE(FIRST_POINT),D1(JSNODEP+JS),                  RAD_CTL1.321    
     &      D1(JRGRAIN+JS), D1(JSNSOOT+JS),                                ARE2F404.133    
C Constants to determine the albedo of sea-ice and snow on sea-ice         AJG1F405.30     
     &      ALPHAM,ALPHAC,ALPHAB,DTICE,L_SSICE_ALBEDO,                     AJG1F405.31     
! Version of Shortwave                                                     ADB1F400.89     
     &      H_SECT(1),                                                     ADB1F400.90     
C size and control variables                                               RAD_CTL1.322    
     &      P_FIELD, POINTS,                                               AWI2F400.2      
     &      L_SNOW_ALBEDO, SAL_DIM,                                        ARE2F404.134    
C output arguments                                                         RAD_CTL1.324    
     &      SAL_VIS(FIRST_POINT_SAL,1),                                    ARE2F404.135    
     &      SAL_NIR(FIRST_POINT_SAL,1),                                    GHM5F405.4      
     &      LAND_AND_ICE_ALBEDO(FIRST_POINT,1),                            GHM5F405.5      
     &      OPEN_SEA_ALBEDO(FIRST_POINT,1) )                               GHM5F405.6      
                                                                           GHM5F405.9      
                                                                           GHM5F405.10     
        ENDIF                                                              GHM5F405.11     
                                                                           GHM5F405.12     
        IF(LTIMER) THEN                                                    GHM5F405.13     
          CALL TIMER ('FTSA    ',4)                                        RAD_CTL1.329    
        END IF                                                             RAD_CTL1.330    
!                                                                          ADB1F400.91     
!       If Version 5 of the boundary layer scheme (MOSES) is used          ADB1F401.802    
!       the net SW flux at the surface below 690nm                         ADB1F401.803    
!       is required, whether the STASH flag is set or not.                 ADB1F401.804    
        IF ( (H_SECT(3).EQ."05A").OR.                                      ADB1F404.1      
     &       (H_SECT(3).EQ."05B").OR.                                      ADB1F404.2      
     &       (H_SECT(3).EQ."06A").OR.                                      ADB1F404.3      
     &       (H_SECT(3).EQ."07A") ) THEN                                   ADB1F404.4      
           L_FLUX_BELOW_690NM_SURF=.TRUE.                                  ADB1F401.806    
        ELSE IF ( H_SECT(3).EQ."07A" ) THEN                                ARE2F404.137    
           L_FLUX_BELOW_690NM_SURF=.TRUE.                                  ARE2F404.138    
        ELSE IF ( (H_SECT(3).EQ."02C").OR.                                 ADB1F401.807    
     &            (H_SECT(3).EQ."03A").OR.                                 ADB1F401.808    
     &            (H_SECT(3).EQ."03B").OR.                                 ADB1F401.809    
     &            (H_SECT(3).EQ."04A") ) THEN                              ADB1F401.810    
           L_FLUX_BELOW_690NM_SURF=SF(204, 1)                              ADB1F401.811    
        ELSE                                                               ADB1F401.812    
           ICODE=1                                                         ADB1F401.813    
           CMESSAGE='RAD_CTL: Unknown version of Section 3 '               ADB1F401.814    
     &       //'encountered.'                                              ADB1F401.815    
           RETURN                                                          ADB1F401.816    
        ENDIF                                                              ADB1F401.817    
        IF ( L_SNOW_ALBEDO ) L_FLUX_BELOW_690NM_SURF=.TRUE.                ARE2F404.139    
!                                                                          ADB1F400.92     
!                                                                          ADB1F401.818    
!       Pre-calculate variables depending on the version of the            ADB1F400.93     
!       radiation used outside the loops over segments to allow            ADB1F400.94     
!       macrotasking to proceed.                                           ADB1F400.95     
!                                                                          GHM5F405.16     
!       Cloud is reduced to three layers under versions 2A & 2B.           GHM5F405.17     
        L_3_CLOUD = H_SECT(1) .EQ. "02A"  .OR.  H_SECT(1) .EQ. "02B"       GHM5F405.18     
!                                                                          GHM5F405.19     
!                                                                          ADB2F404.975    
CL 1.1.4 Calculate index to allow data to be compressed to sunlit points   RAD_CTL1.332    
                                                                           RAD_CTL1.333    
*IF -DEF,MPP                                                               APBBF401.15     
        DO I=FIRST_POINT,LAST_POINT                                        RAD_CTL1.334    
          SWITCH(I)=DAY_FRACTION(I).GT.0.                                  RAD_CTL1.335    
        END DO                                                             RAD_CTL1.336    
*ELSE                                                                      APBBF401.16     
! Switch off SW radiation wherever there is no sunlight, and in            APBBF401.17     
! all halo areas.                                                          APBBF401.18     
         DO I=1,P_FIELD                                                    APBBF401.19     
           SWITCH(I)=.FALSE.                                               APBBF401.20     
         ENDDO                                                             APBBF401.21     
! {Note that DAY_FRACTION is not initialised outside FIRST_POINT to        ARR0F403.3      
!  LAST_POINT. Hence this loop is separated from the following loop.}      ARR0F403.4      
         DO I=FIRST_POINT,LAST_POINT                                       ARR0F403.5      
            SWITCH(I)=DAY_FRACTION(I).GT.0.                                ARR0F403.6      
         ENDDO                                                             ARR0F403.7      
         DO J=NS_Halo+1,P_ROWS-NS_Halo                                     APBBF401.22     
           DO I=1+EW_Halo,ROW_LENGTH-EW_Halo                               APBBF401.23     
             POINT=I+(J-1)*ROW_LENGTH                                      APBBF401.24     
               SWITCH(POINT)=((POINT .GE. FIRST_POINT) .AND.               APBBF401.25     
     &                        (POINT .LE. LAST_POINT ) .AND.               ARR0F403.8      
     &                         SWITCH(POINT)                )              ARR0F403.9      
           ENDDO                                                           APBBF401.28     
         ENDDO                                                             APBBF401.29     
                                                                           APBBF401.30     
! QAN fix : Set RADINCS array to zero everywhere - to ensure the           APBBF401.31     
! unset halos don't contain anything dangerous - ie. NaNs                  APBBF401.32     
         DO LEVEL=0,P_LEVELS+2                                             ARE2F404.140    
           DO I=1,P_FIELD                                                  APBBF401.34     
             RADINCS(I+LEVEL*P_FIELD)=0.0                                  APBBF401.35     
           ENDDO                                                           APBBF401.36     
         ENDDO                                                             APBBF401.37     
                                                                           APBBF401.38     
*ENDIF                                                                     APBBF401.39     
                                                                           RAD_CTL1.337    
      DAYLIGHT_POINTS = 0                                                  GSS9F402.145    
      DO I=1,POINTS                                                        GSS9F402.146    
        IF(SWITCH(FIRST_POINT+I-1))THEN                                    GSS9F402.147    
          DAYLIGHT_POINTS = DAYLIGHT_POINTS + 1                            GSS9F402.148    
          LIST(DAYLIGHT_POINTS) = I                                        GSS9F402.149    
        END IF                                                             GSS9F402.150    
      END DO                                                               GSS9F402.151    
C                                                                          GSS9F402.152    
C                                                                          RAD_CTL1.341    
      IF (LTIMER) THEN                                                     GPB8F405.58     
        CALL TIMER('SW_RAD',5)                                             GPB8F405.59     
        CALL TIMER('SWRAD   ',3)                                           GPB8F405.60     
      ENDIF                                                                GPB8F405.61     
      IF ( DAYLIGHT_POINTS .GT. 0 ) THEN                                   RAD_CTL1.342    
CL Calculate length of segments into which to split                        RAD_CTL1.343    
CL short wave calculations.                                                RAD_CTL1.344    
                                                                           RAD_CTL1.345    
CNC RF Load balance STEP so that last segment does the same or             AAD1F304.94     
CNC RF less work than the others                                           AAD1F304.95     
        N_SW_SEGMENTS = MIN(NCPU*A_SW_SEGMENTS,DAYLIGHT_POINTS)            AAD1F304.96     
        STEP = DAYLIGHT_POINTS/N_SW_SEGMENTS                               AAD1F304.97     
        SEG_START=1                                                        RAD_CTL1.355    
C                                                                          RAD_CTL1.375    
C    Set levels lists and pseudo-levels lists for diagnostics that need    RAD_CTL1.376    
C                                                                them.     RAD_CTL1.377    
      IF ( SF(214,1) ) THEN                                                RAD_CTL1.378    
        CALL SET_LEVELS_LIST (CLOUD_LEVELS, LEN_STLIST,                    RAD_CTL1.379    
     &    STLIST(1,STINDEX(1,214,1,im_index)), LLLAAR,                     GRB4F305.356    
     &    STASH_LEVELS,        NUM_STASH_LEVELS+1, ICODE, CMESSAGE)        RAD_CTL1.381    
        IF ( ICODE .GT. 0 ) RETURN                                         RAD_CTL1.382    
        CALL SET_PSEUDO_LIST (H_SWBANDS, LEN_STLIST,                       RAD_CTL1.383    
     &    STLIST(1,STINDEX(1,214,1,im_index)), PLLAAR,                     GRB4F305.357    
     &    STASH_PSEUDO_LEVELS, NUM_STASH_PSEUDO, ICODE, CMESSAGE)          RAD_CTL1.385    
        IF ( ICODE .GT. 0 ) RETURN                                         RAD_CTL1.386    
      ENDIF                                                                RAD_CTL1.387    
      IF ( SF(215,1) ) THEN                                                RAD_CTL1.388    
        CALL SET_LEVELS_LIST (CLOUD_LEVELS, LEN_STLIST,                    RAD_CTL1.389    
     &    STLIST(1,STINDEX(1,215,1,im_index)), LLLAAF,                     GRB4F305.358    
     &    STASH_LEVELS,        NUM_STASH_LEVELS+1, ICODE, CMESSAGE)        RAD_CTL1.391    
        IF ( ICODE .GT. 0 ) RETURN                                         RAD_CTL1.392    
        CALL SET_PSEUDO_LIST (H_SWBANDS, LEN_STLIST,                       RAD_CTL1.393    
     &    STLIST(1,STINDEX(1,215,1,im_index)), PLLAAF,                     GRB4F305.359    
     &    STASH_PSEUDO_LEVELS, NUM_STASH_PSEUDO, ICODE, CMESSAGE)          RAD_CTL1.395    
        IF ( ICODE .GT. 0 ) RETURN                                         RAD_CTL1.396    
      ENDIF                                                                RAD_CTL1.397    
      IF ( SF(216,1) ) THEN                                                RAD_CTL1.398    
        CALL SET_PSEUDO_LIST (H_SWBANDS, LEN_STLIST,                       RAD_CTL1.399    
     &    STLIST(1,STINDEX(1,216,1,im_index)), PLCAAR,                     GRB4F305.360    
     &    STASH_PSEUDO_LEVELS, NUM_STASH_PSEUDO, ICODE, CMESSAGE)          RAD_CTL1.401    
        IF ( ICODE .GT. 0 ) RETURN                                         RAD_CTL1.402    
      ENDIF                                                                RAD_CTL1.403    
      IF ( SF(217,1) ) THEN                                                RAD_CTL1.404    
        CALL SET_PSEUDO_LIST (H_SWBANDS, LEN_STLIST,                       RAD_CTL1.405    
     &    STLIST(1,STINDEX(1,217,1,im_index)), PLCAAF,                     GRB4F305.361    
     &    STASH_PSEUDO_LEVELS, NUM_STASH_PSEUDO, ICODE, CMESSAGE)          RAD_CTL1.407    
        IF ( ICODE .GT. 0 ) RETURN                                         RAD_CTL1.408    
      ENDIF                                                                RAD_CTL1.409    
                                                                           WI250593.10     
CL 1.1.6 Short wave radiation calculations called in segments              AAD1F304.98     
                                                                           AAD1F304.99     
CNC RF To run SWRAD in parallel, need to pre-calculate and scalar expand   AAD1F304.100    
CNC RF SEG_POINTS, JS and FIRST_POINT. Also need to rejig LIST().          AAD1F304.101    
        JS_TEMP(1) = JS                                                    AAD1F304.102    
        FIRST_POINT_TEMP(1) = FIRST_POINT                                  AAD1F304.103    
        DO I = 1,N_SW_SEGMENTS                                             AAD1F304.104    
          LIT_POINTS = STEP                                                AAD1F304.105    
          START_POINT = 1+(I-1)*STEP                                       AAD1F304.106    
          SEG_POINTS = LIST(I*STEP)-SEG_START+1                            AAD1F304.107    
          IF ( I .EQ. N_SW_SEGMENTS ) THEN                                 AAD1F304.108    
            LIT_POINTS = DAYLIGHT_POINTS - STEP * ( N_SW_SEGMENTS - 1 )    AAD1F304.109    
            SEG_POINTS = POINTS-SEG_START+1                                AAD1F304.110    
          END IF                                                           AAD1F304.111    
          DO J = START_POINT,START_POINT+LIT_POINTS-1                      AAD1F304.112    
            LIST(J) = LIST(J)-SEG_START+1                                  AAD1F304.113    
          END DO                                                           AAD1F304.114    
          SEG_POINTS_TEMP(I) = SEG_POINTS                                  AAD1F304.115    
          IF ( I .LT. N_SW_SEGMENTS ) THEN                                 AAD1F304.116    
            JS_TEMP(I+1) = JS_TEMP(I)+SEG_POINTS                           AAD1F304.117    
            FIRST_POINT_TEMP(I+1) = FIRST_POINT_TEMP(I)+SEG_POINTS         AAD1F304.118    
          ENDIF                                                            AAD1F304.119    
          SEG_START = SEG_START+SEG_POINTS                                 AAD1F304.120    
        END DO                                                             AAD1F304.121    
                                                                           AAD1F304.122    
                                                                           RAD_CTL1.410    
!       CALL AN APPROPRIATE TOP_LEVEL ROUTINE AS DIRECTED BY H_SECT.       ADB1F400.122    
!                                                                          ADB1F400.123    
        IF ( (H_SECT(1).EQ.'01A').OR.                                      ADB2F404.976    
     &       (H_SECT(1).EQ.'01B').OR.                                      ADB2F404.977    
     &       (H_SECT(1).EQ.'02A').OR.                                      ADB2F404.978    
     &       (H_SECT(1).EQ.'02B') ) THEN                                   ADB2F404.979    
!                                                                          ADB1F400.125    
! NB Cloud extent modification not available with this option.             ASK1F405.267    
!                                                                          ASK1F405.268    
!         THE ORIGINAL CODE:                                               ADB1F405.542    
!                                                                          ADB1F400.127    
*IF DEF,MACRO                                                              AAD1F304.123    
CFPP$ CNCALL                                                               AAD1F304.124    
*ENDIF                                                                     AAD1F304.125    
          DO I = 1,N_SW_SEGMENTS                                           ADB1F400.128    
            LIT_POINTS = STEP                                              ADB1F400.129    
            START_POINT = 1+(I-1)*STEP                                     ADB1F400.130    
            IF ( I .EQ. N_SW_SEGMENTS ) THEN                               ADB1F400.131    
              LIT_POINTS = DAYLIGHT_POINTS                                 ADB1F400.132    
     &           - STEP * ( N_SW_SEGMENTS - 1 )                            ADB1F400.133    
            END IF                                                         ADB1F400.134    
            FIRST_POINT = FIRST_POINT_TEMP(I)                              ADB1F400.135    
            JS = JS_TEMP(I)                                                ADB1F400.136    
                                                                           GHM5F405.23     
            IF ( H_SECT(1) .NE. '02B' ) THEN                               GHM5F405.24     
                                                                           GHM5F405.25     
               CALL SWRAD (                                                GHM5F405.26     
C arguments                                                                GHM5F405.27     
C primary data inputs                                                      RAD_CTL1.413    
                                                                           RAD_CTL1.414    
     &        D1(JQ(1)+JS),CO2_MMR,OZONE_1(FIRST_POINT,1),                 GDR3F305.163    
     &        D1(JPSTAR+JS),AKH,BKH,CLOUD_FRACTION(FIRST_POINT,1),         RAD_CTL1.416    
     &        D1(JQCL(1)+JS),D1(JQCF(1)+JS),                               RAD_CTL1.417    
     &        D1(JCCA(1)+JS),D1(JCCLWP+JS),D1(JCCB+JS),D1(JCCT+JS),        AJX0F404.7      
     &        LAND_AND_ICE_ALBEDO(FIRST_POINT,1),                          AWI1F403.314    
     &        OPEN_SEA_ALBEDO(FIRST_POINT,1),                              @DYALLOC.3045   
     &        D1(JICE_FRACTION+JS),COS_ZENITH_ANGLE(FIRST_POINT),          RAD_CTL1.421    
     &        DAY_FRACTION(FIRST_POINT),D1(JLAND+JS),                      RAD_CTL1.422    
     &        LIST(START_POINT),                                           RAD_CTL1.423    
     &        D1(JTHETA(1)+JS),SCS,                                        RAD_CTL1.424    
                                                                           RAD_CTL1.425    
C Size and control variables                                               RAD_CTL1.426    
                                                                           RAD_CTL1.427    
     &        SW_TABLES,SECS_PER_STEPim(atmos_im),                         ADR1F305.122    
     &        STASHWORK(JS+SI(208,1,im_index)), SF(208,1),                 GRB4F305.362    
     &        STASHWORK(JS+SI(209,1,im_index)), SF(209,1),                 GRB4F305.363    
     &        STASHWORK(JS+SI(204,1,im_index)), L_FLUX_BELOW_690NM_SURF,   ADB1F401.819    
     &        STASHWORK(JS+SI(235,1,im_index)), SF(235,1),                 GRB4F305.365    
     &        STASHWORK(SI(210,1,im_index)+JS), SF(210,1),                 GRB4F305.366    
     &        STASHWORK(SI(211,1,im_index)+JS), SF(211,1),                 GRB4F305.367    
     &        STASHWORK(SI(212,1,im_index)+JS), SF(212,1),                 GRB4F305.368    
     &        STASHWORK(SI(213,1,im_index)+JS), SF(213,1),                 GRB4F305.369    
     &        STASHWORK(SI(214,1,im_index)+JS), SF(214,1),                 GRB4F305.370    
     &        LLLAAR, PLLAAR,                                              GRB4F305.371    
     &        STASHWORK(SI(215,1,im_index)+JS), SF(215,1),                 GRB4F305.372    
     &        LLLAAF, PLLAAF,                                              GRB4F305.373    
     &        STASHWORK(SI(216,1,im_index)+JS), SF(216,1), PLCAAR,         GRB4F305.374    
     &        STASHWORK(SI(217,1,im_index)+JS), SF(217,1), PLCAAF,         GRB4F305.375    
     &        STASHWORK(SI(219,1,im_index)+JS), SF(219,1),                 GRB4F305.376    
     &        STASHWORK(JS+SI(220,1,im_index)), SF(220,1),                 GRB4F305.377    
     &        STASHWORK(JS+SI(221,1,im_index)), SF(221,1),                 GRB4F305.378    
     &        STASHWORK(JS+SI(222,1,im_index)), SF(222,1),                 GRB4F305.379    
     &        STASHWORK(JS+SI(223,1,im_index)), SF(223,1),                 GRB4F305.380    
     &        STASHWORK(JS+SI(224,1,im_index)), SF(224,1),                 GRB4F305.381    
     &        LMICROPHY,                                                   AAJ1F304.6      
     &        STASHWORK(JS+SI(218,1,im_index)), SF(218,1),                 GRB4F305.382    
     &        L_3_CLOUD,                                                   ADB1F400.138    
     &        L_CLOUD_WATER_PARTITION,                                     AYY1F404.259    
     &        LIT_POINTS,                                                  RAD_CTL1.445    
     &        SEG_POINTS_TEMP(I),P_LEVELS,CLOUD_LEVELS,                    AAD1F304.135    
     &        Q_LEVELS,OZONE_LEVELS,P_FIELD,                               RAD_CTL1.447    
                                                                           RAD_CTL1.448    
C Output data                                                              RAD_CTL1.449    
                                                                           RAD_CTL1.450    
     &        NETSW(FIRST_POINT),                                          RAD_CTL1.451    
     &        STASHWORK(SI(203,1,im_index)+JS), RADINCS(FIRST_POINT)       ADB1F400.139    
     &        )                                                            ADB1F400.140    
                                                                           RAD_CTL1.453    
             ELSE                                                          AWI1F403.315    
                                                                           AWI1F403.316    
               IF ( SF(236,1) ) THEN                                       AWI1F404.15     
                  D1236_DIM = LIT_POINTS                                   AWI1F404.16     
                ELSE                                                       AWI1F404.17     
                  D1236_DIM = 1                                            AWI1F404.18     
               ENDIF                                                       AWI1F404.19     
                                                                           AWI1F404.20     
               CALL SWRAD (                                                AWI1F403.317    
C arguments                                                                AWI1F403.318    
C primary data inputs                                                      AWI1F403.319    
                                                                           AWI1F403.320    
     &        D1(JQ(1)+JS),CO2_MMR,OZONE_1(FIRST_POINT,1),                 AWI1F403.321    
     &        D1(JPSTAR+JS),AKH,BKH,CLOUD_FRACTION(FIRST_POINT,1),         AWI1F403.322    
     &        D1(JQCL(1)+JS),D1(JQCF(1)+JS),                               AWI1F403.323    
     &        D1(JCCA(1)+JS),D1(JCCLWP+JS),D1(JCCB+JS),D1(JCCT+JS),        GHM5F405.41     
     &        LAND_AND_ICE_ALBEDO(FIRST_POINT,1),                          GHM5F405.42     
     &        OPEN_SEA_ALBEDO(FIRST_POINT,1),                              GHM5F405.43     
     &        D1(JICE_FRACTION+JS),COS_ZENITH_ANGLE(FIRST_POINT),          GHM5F405.44     
     &        DAY_FRACTION(FIRST_POINT),D1(JLAND+JS),                      GHM5F405.45     
     &        LIST(START_POINT),                                           GHM5F405.46     
     &        D1(JTHETA(1)+JS),SCS,                                        GHM5F405.47     
                                                                           GHM5F405.48     
C Size and control variables                                               GHM5F405.49     
                                                                           GHM5F405.50     
     &        SW_TABLES,SECS_PER_STEPim(atmos_im),                         GHM5F405.51     
     &        NO_SULPHATE_ALBEDO(FIRST_POINT,1),                           GHM5F405.52     
     &        STASHWORK(JS+SI(208,1,im_index)), SF(208,1),                 GHM5F405.53     
     &        STASHWORK(JS+SI(209,1,im_index)), SF(209,1),                 GHM5F405.54     
     &        STASHWORK(JS+SI(204,1,im_index)), L_FLUX_BELOW_690NM_SURF,   GHM5F405.55     
     &        STASHWORK(JS+SI(235,1,im_index)), SF(235,1),                 GHM5F405.56     
     &        STASHWORK(SI(210,1,im_index)+JS), SF(210,1),                 GHM5F405.57     
     &        STASHWORK(SI(211,1,im_index)+JS), SF(211,1),                 GHM5F405.58     
     &        STASHWORK(SI(212,1,im_index)+JS), SF(212,1),                 GHM5F405.59     
     &        STASHWORK(SI(213,1,im_index)+JS), SF(213,1),                 GHM5F405.60     
     &        STASHWORK(SI(214,1,im_index)+JS), SF(214,1),                 GHM5F405.61     
     &        LLLAAR, PLLAAR,                                              GHM5F405.62     
     &        STASHWORK(SI(215,1,im_index)+JS), SF(215,1),                 GHM5F405.63     
     &        LLLAAF, PLLAAF,                                              GHM5F405.64     
     &        STASHWORK(SI(216,1,im_index)+JS), SF(216,1), PLCAAR,         GHM5F405.65     
     &        STASHWORK(SI(217,1,im_index)+JS), SF(217,1), PLCAAF,         GHM5F405.66     
     &        STASHWORK(SI(219,1,im_index)+JS), SF(219,1),                 GHM5F405.67     
     &        STASHWORK(JS+SI(220,1,im_index)), SF(220,1),                 GHM5F405.68     
     &        STASHWORK(JS+SI(221,1,im_index)), SF(221,1),                 GHM5F405.69     
     &        STASHWORK(JS+SI(222,1,im_index)), SF(222,1),                 GHM5F405.70     
     &        STASHWORK(JS+SI(223,1,im_index)), SF(223,1),                 GHM5F405.71     
     &        STASHWORK(JS+SI(224,1,im_index)), SF(224,1),                 GHM5F405.72     
     &        LMICROPHY,                                                   GHM5F405.73     
     &        STASHWORK(SI(236,1,im_index)+JS), SF(236,1),                 GHM5F405.74     
     &        NLALBS, D1236_DIM,                                           GHM5F405.75     
     &        STASHWORK(JS+SI(218,1,im_index)), SF(218,1),                 AWI1F403.359    
     &        L_3_CLOUD,                                                   AWI1F403.360    
     &        L_CLOUD_WATER_PARTITION,                                     AYY1F404.260    
     &        LIT_POINTS,                                                  AWI1F403.361    
     &        SEG_POINTS_TEMP(I),P_LEVELS,CLOUD_LEVELS,                    AWI1F403.362    
     &        Q_LEVELS,OZONE_LEVELS,P_FIELD,                               AWI1F403.363    
                                                                           AWI1F403.364    
C Output data                                                              AWI1F403.365    
                                                                           AWI1F403.366    
     &        NETSW(FIRST_POINT),                                          AWI1F403.367    
     &        STASHWORK(SI(203,1,im_index)+JS), RADINCS(FIRST_POINT)       AWI1F403.368    
     &        )                                                            AWI1F403.369    
                                                                           AWI1F403.370    
            ENDIF                                                          AWI1F403.371    
                                                                           AWI1F403.372    
          END DO                                                           ADB1F400.141    
!                                                                          ADB1F400.142    
        ELSE IF (H_SECT(1).EQ.'03A') THEN                                  ADB2F404.980    
!                                                                          ADB1F400.144    
!         THE GENERAL TWO-STREAM CODE:                                     ADB1F400.145    
!                                                                          ADB1F400.146    
*IF DEF,MACRO                                                              ADB1F400.147    
CFPP$ CNCALL                                                               ADB1F400.148    
*ENDIF                                                                     ADB1F400.149    
          DO I = 1,N_SW_SEGMENTS                                           ADB1F400.150    
            LIT_POINTS = STEP                                              ADB1F400.151    
            START_POINT = 1+(I-1)*STEP                                     ADB1F400.152    
            IF ( I .EQ. N_SW_SEGMENTS ) THEN                               ADB1F400.153    
              LIT_POINTS = DAYLIGHT_POINTS                                 ADB1F400.154    
     &           - STEP * ( N_SW_SEGMENTS - 1 )                            ADB1F400.155    
            END IF                                                         ADB1F400.156    
            FIRST_POINT = FIRST_POINT_TEMP(I)                              ADB1F400.157    
            JS = JS_TEMP(I)                                                ADB1F400.158    
!                                                                          ADB1F402.590    
!           Set the first point of the array of sulphate to be used.       ADB1F402.591    
!           A separate assignment is necessary since this array will       ADB1F402.592    
!           not be of the full size unless the sulphur cycle is on.        ADB1F402.593    
            IF (L_USE_SULPC_DIRECT .OR. L_USE_SULPC_INDIRECT_SW) THEN      AAJ1F404.11     
               FIRST_POINT_SULPC=FIRST_POINT                               ADB1F402.595    
            ELSE                                                           ADB1F402.596    
               FIRST_POINT_SULPC=1                                         ADB1F402.597    
            ENDIF                                                          ADB1F402.598    
            IF (L_USE_SOOT_DIRECT) THEN                                    ALR3F405.51     
               FIRST_POINT_SOOT=FIRST_POINT                                ALR3F405.52     
            ELSE                                                           ALR3F405.53     
               FIRST_POINT_SOOT=1                                          ALR3F405.54     
            ENDIF                                                          ALR3F405.55     
!           Similarly for the carbon cycle                                 ACN2F405.72     
            L_CO2_3D = L_CO2_INTERACTIVE                                   ACN2F405.73     
            IF (L_CO2_INTERACTIVE) THEN                                    ACN2F405.74     
              FIRST_POINT_CO2=FIRST_POINT                                  ACN2F405.75     
            ELSE                                                           ACN2F405.76     
              FIRST_POINT_CO2=1                                            ACN2F405.77     
            ENDIF                                                          ACN2F405.78     
!           SAL arrays not accessed (removes bounds checking messages)     ARE2F404.141    
            IF( L_SNOW_ALBEDO ) THEN                                       ARE2F404.142    
              FIRST_POINT_SAL = FIRST_POINT                                ARE2F404.143    
            ELSE                                                           ARE2F404.144    
              FIRST_POINT_SAL = 1                                          ARE2F404.145    
            ENDIF                                                          ARE2F404.146    
                                                                           ARE2F404.147    
!           Set the actual sizes of the arrays to an odd number to         ADB1F400.159    
!           avoid memory bank conflicts.                                   ADB1F400.160    
            RAD_ARRAY_SIZE=2*(LIT_POINTS/2)+1                              ADB1F400.161    
!                                                                          ADB1F400.162    
!                                                                          ADB2F404.981    
!           Set dimensions for diagnostic workspace.                       ADB2F404.982    
            IF (SF(219, 1)) THEN                                           ADB2F404.983    
               NPDWD_CL_PROFILE=SEG_POINTS_TEMP(I)                         ADB2F404.984    
            ELSE                                                           ADB2F404.985    
               NPDWD_CL_PROFILE=1                                          ADB2F404.986    
            ENDIF                                                          ADB2F404.987    
!                                                                          ADB2F404.988    
!                                                                          ADB2F404.989    
            CALL R2_SWRAD(ICODE,                                           ADB1F400.163    
C arguments                                                                ADB1F400.164    
C primary data inputs                                                      ADB1F400.165    
                                                                           AAD1F304.136    
!                       Mixing Ratios                                      ADB1F400.166    
     &        D1(JQ(1)+JS),CO2_MMR,OZONE_1(FIRST_POINT,1),O2MMR,           ADB2F404.990    
     &        CO2_DIM1, CO2_DIM2, CO2_3D(FIRST_POINT_CO2,1),               ACN2F405.79     
     &        L_CO2_3D,                                                    ACN2F405.80     
!             AC and BC added for conformity at lower levels               ADB1F400.168    
!                       Pressure Fields                                    ADB1F400.169    
     &        D1(JPSTAR+JS),AKH,BKH,A_LEVDEPC(JAK),A_LEVDEPC(JBK),         ADB1F400.170    
!                       Temperatures                                       ADB1F400.171    
     &        D1(JTHETA(1)+JS),                                            ADB1F400.172    
!                       Options for treating clouds                        ADB1F402.860    
     &        L_GLOBAL_CLOUD_TOP, GLOBAL_CLOUD_TOP,                        ADB1F402.861    
!                       Stratiform Cloud Fields                            ADB1F400.173    
     &        L_CLOUD_WATER_PARTITION,                                     AYY1F404.261    
     &        AREA_CLOUD_FRACTION(FIRST_POINT,1),                          ASK1F405.269    
     &        CLOUD_FRACTION(FIRST_POINT,1),                               ADB1F400.174    
     &        D1(JQCL(1)+JS),D1(JQCF(1)+JS),                               ADB1F400.175    
!                       Convective Cloud Fields                            ADB1F400.176    
     &        D1(JCCA(1)+JS),D1(JCCLWP+JS),D1(JCCB+JS),D1(JCCT+JS),        AJX0F404.9      
     &        L_3D_CCA,                                                    AJX0F404.10     
!                       Surface Fields                                     ADB1F400.178    
     &        SAL_VIS(FIRST_POINT_SAL,1),SAL_NIR(FIRST_POINT_SAL,1),       GHM5F405.76     
     &        LAND_AND_ICE_ALBEDO(FIRST_POINT,1),                          GHM5F405.77     
     &        OPEN_SEA_ALBEDO(FIRST_POINT,1),                              GHM5F405.78     
     &        D1(JICE_FRACTION+JS),D1(JLAND+JS),D1(JSNODEP+JS),            ADB2F404.991    
!                       Prognostic Snow Albedo flag                        ARE2F404.149    
     &        L_SNOW_ALBEDO, SAL_DIM,                                      ARE2F404.150    
!                       Solar Fields                                       ADB1F400.182    
     &        COS_ZENITH_ANGLE(FIRST_POINT),                               ADB1F400.183    
     &        DAY_FRACTION(FIRST_POINT),LIST(START_POINT),SCS,             ADB2F404.992    
!                       Aerosol Fields                                     ADB1F400.186    
     &        L_CLIMAT_AEROSOL, BL_LEVELS,                                 ADB1F402.600    
     &        L_USE_SULPC_DIRECT, L_USE_SULPC_INDIRECT_SW,                 AAJ1F404.12     
     &        SULP_DIM1,SULP_DIM2,ACCUM_SULPHATE(FIRST_POINT_SULPC, 1),    ADB2F404.993    
     &        AITKEN_SULPHATE(FIRST_POINT_SULPC, 1),                       ADB1F402.602    
     &        DISS_SULPHATE(FIRST_POINT_SULPC, 1),                         ADB2F404.994    
     & L_USE_SOOT_DIRECT,SOOT_DIM1,SOOT_DIM2,                              ALR3F405.56     
     & FRESH_SOOT(FIRST_POINT_SOOT, 1),AGED_SOOT(FIRST_POINT_SOOT, 1),     ALR3F405.57     
!                       Level of tropopause                                ADB1F402.603    
     &        TRINDX(FIRST_POINT)                                          ADB2F404.995    
                                                                           ADB1F400.188    
C Size and control variables                                               ADB1F400.189    
                                                                           ADB1F400.190    
!                       Spectrum                                           ADB1F400.191    
*CALL SWSARG3A                                                             ADB2F404.996    
!                       Algorithmic options                                ADB2F404.997    
*CALL SWCARG3A                                                             ADB2F404.998    
     &        ,                                                            ADB2F404.999    
     &        SECS_PER_STEPim(atmos_im),                                   ADB2F404.1000   
                                                                           ADB1F400.193    
!                       General Diagnostics                                ADB1F400.194    
     &        STASHWORK(JS+SI(208,1,im_index)), SF(208,1),                 ADB1F400.195    
     &        STASHWORK(JS+SI(209,1,im_index)), SF(209,1),                 ADB1F400.196    
     &        STASHWORK(JS+SI(204,1,im_index)), L_FLUX_BELOW_690NM_SURF,   ADB1F401.823    
     &        STASHWORK(JS+SI(235,1,im_index)), SF(235,1),                 ADB1F400.198    
     &        STASHWORK(SI(210,1,im_index)+JS), SF(210,1),                 ADB1F400.199    
     &        STASHWORK(SI(211,1,im_index)+JS), SF(211,1),                 ADB1F400.200    
     &        STASHWORK(SI(212,1,im_index)+JS), SF(212,1),                 ADB1F400.201    
     &        STASHWORK(SI(213,1,im_index)+JS), SF(213,1),                 ADB1F400.202    
     &        STASHWORK(SI(219,1,im_index)+JS), SF(219,1),                 ADB1F400.204    
     &        STASHWORK(SI(233,1,im_index)+JS), SF(233,1),                 ADB1F400.205    
     &        STASHWORK(SI(237,1,im_index)+JS), SF(237,1),                 ADB2F404.1001   
     &        STASHWORK(SI(238,1,im_index)+JS), SF(238,1),                 ADB2F404.1002   
!                       Microphysical Flag                                 ADB1F400.206    
     &        LMICROPHY,                                                   ADB1F400.207    
!                       Microphysical Diagnostics                          ADB1F400.208    
     &        STASHWORK(JS+SI(225,1,im_index)), SF(225,1),                 ADB1F400.209    
     &        STASHWORK(JS+SI(221,1,im_index)), SF(221,1),                 ADB1F400.210    
     &        STASHWORK(JS+SI(226,1,im_index)), SF(226,1),                 ADB1F400.211    
     &        STASHWORK(JS+SI(223,1,im_index)), SF(223,1),                 ADB1F400.212    
     &        STASHWORK(JS+SI(224,1,im_index)), SF(224,1),                 ADB1F400.213    
     &        STASHWORK(JS+SI(245,1,im_index)), SF(245,1),                 AAJ3F404.4      
     &        STASHWORK(JS+SI(246,1,im_index)), SF(246,1),                 AAJ3F404.5      
     &        STASHWORK(JS+SI(241,1,im_index)), SF(241,1),                 AAJ3F404.6      
     &        STASHWORK(JS+SI(242,1,im_index)), SF(242,1),                 AAJ3F404.7      
     &        STASHWORK(JS+SI(243,1,im_index)), SF(243,1),                 AAJ3F404.8      
     &        STASHWORK(JS+SI(244,1,im_index)), SF(244,1),                 AAJ3F404.9      
!                       Physical Dimensions                                ADB2F404.1003   
     &        LIT_POINTS,SEG_POINTS_TEMP(I),P_LEVELS,CLOUD_LEVELS,         ADB2F404.1004   
     &        Q_LEVELS,OZONE_LEVELS,                                       ADB1F400.217    
     &        P_FIELD, RAD_ARRAY_SIZE, P_LEVELS, 1,N_CCA_LEV,              AJX0F404.11     
!                       Working Dimensions for Diagnostics                 ADB2F404.1005   
     &        NPDWD_CL_PROFILE,                                            ADB2F404.1006   
!                                                                          ADB2F404.1007   
! Output data                                                              ADB1F400.228    
!                                                                          ADB2F404.1008   
     &        NETSW(FIRST_POINT),                                          ADB1F400.230    
     &        STASHWORK(SI(203,1,im_index)+JS), RADINCS(FIRST_POINT)       ADB1F400.231    
     &        )                                                            ADB1F400.232    
             IF (ICODE.NE.0) RETURN                                        ADB1F401.824    
!                                                                          ADB1F400.233    
          ENDDO                                                            ADB1F400.234    
!                                                                          ADB1F400.235    
        ELSE                                                               ADB2F404.1009   
!                                                                          ADB2F404.1010   
          ICODE=1                                                          ADB2F404.1011   
          CMESSAGE='Unknown option for SW radiation in RAD_CTL1'           ADB2F404.1012   
          RETURN                                                           ADB2F404.1013   
!                                                                          ADB2F404.1014   
        ENDIF                                                              ADB1F400.236    
!                                                                          ADB1F400.237    
                                                                           ADB1F400.238    
                                                                           AAD1F304.138    
C                                                                          RAD_CTL1.463    
        ELSE  !  IF ( DAYLIGHT_POINTS .EQ. 0 ) THEN                        RAD_CTL1.464    
          DO LEVEL=0, P_LEVELS+1 ! extra level is net surf SW in band 1    AJS1F401.974    
            DO POINT=FIRST_POINT, LAST_POINT                               RAD_CTL1.466    
              RADINCS(POINT+LEVEL*P_FIELD) = 0.                            RAD_CTL1.467    
            ENDDO                                                          RAD_CTL1.468    
          ENDDO                                                            RAD_CTL1.469    
          DO POINT = FIRST_POINT, LAST_POINT                               RAD_CTL1.470    
            NETSW(POINT) = 0.                                              RAD_CTL1.471    
          ENDDO                                                            RAD_CTL1.472    
                                                                           ARR2F401.8      
C       Note that SW diagnostics 203-204,207-217,235 are implicitly        ARR2F401.9      
C       set to zero when the whole domain is dark, since STASHWORK is      ARR2F401.10     
C       initialised to 0.0 at the start of this routine.                   ARR2F401.11     
                                                                           ARR2F401.12     
C         The following diagnostics are not naturally zero at night        AWI2F403.1      
C     points, & as SWRAD cannot be CALLed for a completely dark domain,    AWI2F403.2      
C     they have a routine of their own for such cases.                     AWI2F403.3      
                                                                           AWI2F403.4      
C      As with FTSA & SOLANG, RAD_CTL does not bother to batch SWDKDI.     AWI2F403.5      
                                                                           AWI2F403.6      
          IF ( SF(218,1) .OR. SF(219,1) ) CALL SWDKDI (AKH, BKH,           AWI2F403.7      
     &   AREA_CLOUD_FRACTION(START_POINT_NO_HALO,1),                       ASK1F405.270    
     &   D1(JCCA(1)+START_POINT_NO_HALO-1),                                AJX0F404.12     
     &   STASHWORK(SI(218,1,im_index)+START_POINT_NO_HALO-1), SF(218,1),   AWI2F403.10     
     &   STASHWORK(SI(219,1,im_index)+START_POINT_NO_HALO-1), SF(219,1),   AWI2F403.11     
     &   L_3_CLOUD,     POINTS, P_LEVELS, CLOUD_LEVELS, P_FIELD)           AWI2F403.12     
      ENDIF                                                                RAD_CTL1.586    
      IF (LTIMER) THEN                                                     GPB8F405.62     
        CALL TIMER('SWRAD   ',4)                                           GPB8F405.63     
        CALL TIMER('SW_RAD',6)                                             GPB8F405.64     
      ENDIF                                                                GPB8F405.65     
                                                                           RAD_CTL1.587    
      FIRST_POINT = START_POINT_NO_HALO                                    APBBF401.40     
      LAST_POINT  = END_P_POINT_NO_HALO                                    APBBF401.41     
      POINTS      = LAST_POINT-FIRST_POINT+1                               APBBF401.42     
      JS          = FIRST_POINT-1                                          APBBF401.43     
                                                                           RAD_CTL1.594    
CL Store surface albedo                                                    ARE2F404.151    
                                                                           ARE2F404.152    
      DO I=FIRST_POINT,LAST_POINT                                          ARE2F404.153    
        RADINCS(I+(P_LEVELS+2)*P_FIELD) = LAND_AND_ICE_ALBEDO(I,1)         ARE2F404.154    
      END DO                                                               ARE2F404.155    
                                                                           ARE2F404.156    
*IF -DEF,FRADIO                                                            GGH3F401.30     
CL Write out SW radiation increments, including net surface SW band 1      AJS1F401.975    
CL and surface albedo                                                      ARE2F404.157    
        LEN=(P_FIELDDA*(P_LEVELS+3)+511)/512*512  !no words for SW incs    ARE2F404.158    
        NFTSWAP=16                                                         RAD_CTL1.598    
        CALL SETPOS(NFTSWAP,0,ICODE)                                       GTD0F400.117    
        CALL BUFFOUT(NFTSWAP,RADINCS,LEN,LEN_IO,A_IO)                      RAD_CTL1.600    
                                                                           RAD_CTL1.601    
C Error check                                                              RAD_CTL1.602    
                                                                           RAD_CTL1.603    
        IF(A_IO.NE.-1.0.OR.LEN_IO.NE.(LEN)) THEN                           RAD_CTL1.604    
          CMESSAGE=' RAD_CTL :Paging IO Error '                            RAD_CTL1.605    
          ICODE=2                                                          RAD_CTL1.606    
          RETURN                                                           RAD_CTL1.607    
        END IF                                                             RAD_CTL1.608    
*ENDIF                                                                     RAD_CTL1.609    
                                                                           RAD_CTL1.610    
        DO I=FIRST_POINT,LAST_POINT                                        RAD_CTL1.611    
          MEAN_COSZ(I) = COS_ZENITH_ANGLE(I) * DAY_FRACTION(I)             RAD_CTL1.612    
        ENDDO                                                              RAD_CTL1.613    
                                                                           RAD_CTL1.614    
      IF (LEMCORR) THEN                                                    GSS1F304.771    
C                                                                          RAD_CTL1.616    
C SUM SHORT WAVE FLUXES INTO THE ATMOSPHERE AND                            RAD_CTL1.617    
C ADD INTO THE NET DIABATIC FLUXES INTO THE                                RAD_CTL1.618    
C ATMOSPHERE FOR USE IN THE ENERGY CORRECTION                              RAD_CTL1.619    
C PROCEDURE                                                                RAD_CTL1.620    
C                                                                          RAD_CTL1.621    
      DO I=FIRST_POINT,LAST_POINT                                          RAD_CTL1.622    
       NET_ATM_FLUX(I) = NETSW(I)                                          RAD_CTL1.623    
     &                   - MEAN_COSZ(I) * RADINCS(I)                       RAD_CTL1.624    
     &                   - STASHWORK(SI(203,1,im_index)+I-1)               GRB4F305.400    
      END DO                                                               RAD_CTL1.626    
C                                                                          RAD_CTL1.627    
      IF (LTIMER) THEN                                                     RAD_CTL1.628    
        CALL TIMER ('FLX_DIAG',3)                                          RAD_CTL1.629    
      END IF                                                               RAD_CTL1.630    
C                                                                          RAD_CTL1.631    
      CALL FLUX_DIAG(NET_ATM_FLUX,COS_P_LATITUDE,                          APB5F401.150    
     &               P_FIELD,FIRST_POINT,POINTS,                           APB5F401.151    
     &               1.0,A_SW_RADSTEP*SECS_PER_STEPim(atmos_im),           APB5F401.152    
     &               D1(JNET_FLUX))                                        GSM3F404.47     
C                                                                          RAD_CTL1.635    
      IF (LTIMER) THEN                                                     RAD_CTL1.636    
        CALL TIMER ('FLX_DIAG',4)                                          RAD_CTL1.637    
      END IF                                                               RAD_CTL1.638    
C                                                                          RAD_CTL1.639    
      END IF     !    LEMCORR                                              GSS1F304.772    
C                                                                          GSS1F304.773    
CL End of branch depending on whether shortwave radiation timestep.        RAD_CTL1.641    
C                                                                          GSS1F304.774    
      ENDIF                                                                RAD_CTL1.643    
                                                                           RAD_CTL1.644    
CL 1.1.7 Remaining "astronomy"                                             RAD_CTL1.645    
                                                                           RAD_CTL1.646    
CL Calculate day fraction and mean cos(solar zenith angle while            RAD_CTL1.647    
CL the sun is up) for each grid point for this physics timestep:           RAD_CTL1.648    
C  (if in fact full SW calculations are being done every timestep, this    RAD_CTL1.649    
C  is of course unnecessary, as are various calculations later on)         RAD_CTL1.650    
                                                                           RAD_CTL1.651    
      IF ( A_SW_RADSTEP .GT. 1 ) THEN                                      RAD_CTL1.652    
                                                                           RAD_CTL1.653    
        IF ( LTIMER ) THEN                                                 RAD_CTL1.654    
          CALL TIMER('SOLANG  ',3)                                         RAD_CTL1.655    
        END IF                                                             RAD_CTL1.656    
                                                                           RAD_CTL1.657    
        CALL SOLANG(                                                       RAD_CTL1.658    
C input constants                                                          RAD_CTL1.659    
     &     SINDEC, TIME, SECS_PER_STEPim(atmos_im),                        ADR1F305.125    
C row and column dependent constants                                       RAD_CTL1.661    
     &     SIN_TRUE_LATITUDE(FIRST_POINT), TRUE_LONGITUDE(FIRST_POINT),    RAD_CTL1.662    
C size variables                                                           RAD_CTL1.663    
     &     POINTS,                                                         RAD_CTL1.664    
C output fields                                                            RAD_CTL1.665    
     &     DAY_FRACTION(FIRST_POINT), COS_ZENITH_ANGLE(FIRST_POINT) )      RAD_CTL1.666    
                                                                           RAD_CTL1.667    
        IF ( LTIMER ) THEN                                                 RAD_CTL1.668    
          CALL TIMER('SOLANG  ',4)                                         RAD_CTL1.669    
        END IF                                                             RAD_CTL1.670    
                                                                           RAD_CTL1.671    
      ENDIF         ! ( was A_SW_RADSTEP > 1 ? )                           RAD_CTL1.672    
C                                                                          RAD_CTL1.673    
CL    ! Combine the two terms to give the mean cos zenith angle over the   RAD_CTL1.674    
CL    !  whole of the physics timestep.                                    AWI1F400.13     
      DO I=FIRST_POINT, LAST_POINT                                         RAD_CTL1.679    
        COS_ZENITH_ANGLE(I) = COS_ZENITH_ANGLE(I) * DAY_FRACTION(I)        RAD_CTL1.680    
      ENDDO                                                                RAD_CTL1.682    
                                                                           RAD_CTL1.683    
CL 1.2 add SW radiative heating to temperatures                            WI200893.29     
                                                                           RAD_CTL1.685    
      DO 12 LEVEL=1,P_LEVELS                                               RAD_CTL1.686    
        DO I=FIRST_POINT,LAST_POINT                                        RAD_CTL1.687    
          D1(JTHETA(LEVEL)+I-1) = D1(JTHETA(LEVEL)+I-1) +                  RAD_CTL1.688    
     &               RADINCS(I+LEVEL*P_FIELD) * COS_ZENITH_ANGLE(I)        RAD_CTL1.689    
!                                                                          ARN1F404.127    
!!     Calculate the SW heating rates for layers 1 to BL_LEVELS            ARN1F404.128    
!!     for A03_6A                                                          ARN1F404.129    
!                                                                          ARN1F404.130    
          IF (L_RADHEAT .AND. LEVEL .LE. BL_LEVELS) THEN                   ARN1F404.131    
            RADHEAT_RATE(I,LEVEL) =                                        ARN1F404.132    
     &         (RADINCS(I+LEVEL*P_FIELD) * COS_ZENITH_ANGLE(I))            ARN1F404.133    
     &          / SECS_PER_STEPim(atmos_im)                                ARN1F404.134    
          ENDIF                                                            ARN1F404.135    
        END DO                                                             RAD_CTL1.690    
 12   CONTINUE                                                             RAD_CTL1.691    
                                                                           RAD_CTL1.692    
CL Set up net down surface SW radiation flux in SURF_RADFLUX               WI200893.30     
                                                                           RAD_CTL1.694    
      DO I=FIRST_POINT,LAST_POINT                                          RAD_CTL1.695    
        SURF_RADFLUX(I) = RADINCS(I) * COS_ZENITH_ANGLE(I)                 RAD_CTL1.696    
      END DO                                                               RAD_CTL1.697    
                                                                           AJS1F401.977    
CL Set up net down surface SW radiation flux for snow-free and             ARE2F404.159    
CL snow-covered fractions of gridboxes                                     ARE2F404.160    
                                                                           ARE2F404.161    
      IF ( L_MOSES_II ) THEN                                               ABX1F405.142    
                                                                           ABX1F405.143    
CL Set the SW flux over the snow-free surface to the gridbox mean          ABX1F405.144    
CL SW flux (valid for sea points but corrected below for land points)      ABX1F405.145    
        DO I=FIRST_POINT,LAST_POINT                                        ABX1F405.146    
          RAD_NO_SNOW(I) = SURF_RADFLUX(I)                                 ABX1F405.147    
        ENDDO                                                              ABX1F405.148    
                                                                           ABX1F405.149    
CL Derive fluxes over snow-free and snow-covered fraction on land points   ABX1F405.150    
        DO L=LAND1,LAND1+LAND_PTS-1                                        ABX1F405.151    
          I = LAND_LIST(L)                                                 ABX1F405.152    
          IF ( LAND_AND_ICE_ALBEDO(I,1) .LT. 1. )                          ABX1F405.153    
     &      RAD_NO_SNOW(I) = (1. - ALBSNF(I)) * SURF_RADFLUX(I) /          ABX1F405.154    
     &                                  (1. - LAND_AND_ICE_ALBEDO(I,1))    ABX1F405.155    
          IF ( SNOW_FRAC(I) .GT. 0. )                                      ABX1F405.156    
     &      RAD_SNOW(I) = ( SURF_RADFLUX(I) -                              ABX1F405.157    
     &                             (1. - SNOW_FRAC(I))*RAD_NO_SNOW(I) )    ABX1F405.158    
     &                                                   / SNOW_FRAC(I)    ABX1F405.159    
        ENDDO                                                              ABX1F405.160    
      ENDIF                                                                ABX1F405.161    
                                                                           ARE2F404.173    
CL Set up photosynthetically active surface radiation, if calculated       AJS1F401.978    
                                                                           AJS1F401.979    
      IF(L_FLUX_BELOW_690NM_SURF) THEN                                     AJS1F401.980    
         DO I=FIRST_POINT,LAST_POINT                                       AJS1F401.981    
           PHOTOSYNTH_ACT_RAD(I) = RADINCS(I+(P_LEVELS+1)*P_FIELD)         AJS1F401.982    
     &      * COS_ZENITH_ANGLE(I)                                          AJS1F401.983    
         END DO                                                            AJS1F401.984    
      ENDIF                                                                AJS1F401.985    
                                                                           RAD_CTL1.698    
CL 1.3 Copy radiation diagnostics into position                            RAD_CTL1.699    
                                                                           RAD_CTL1.700    
CL  Copy diagnostic information to STASHWORK for processing.               RAD_CTL1.701    
                                                                           RAD_CTL1.702    
CL 1.3.1 Surface fluxes                                                    RAD_CTL1.703    
                                                                           RAD_CTL1.704    
        IF(SF(202,1)) THEN                                                 RAD_CTL1.705    
          DO I=FIRST_POINT, LAST_POINT                                     RAD_CTL1.706    
            STASHWORK(SI(202,1,im_index)+I-1) =                            GRB4F305.401    
     &                                   RADINCS(I)*COS_ZENITH_ANGLE(I)    GRB4F305.402    
          ENDDO                                                            RAD_CTL1.708    
        END IF                                                             RAD_CTL1.709    
                                                                           RAD_CTL1.710    
        IF(SF(201,1)) THEN                                                 RAD_CTL1.711    
          DO I = FIRST_POINT,LAST_POINT                                    RAD_CTL1.712    
            STASHWORK(SI(201,1,im_index)+I-1)=RADINCS(I)*MEAN_COSZ(I)+     GRB4F305.403    
     &      STASHWORK(SI(203,1,im_index)+I-1)                              GRB4F305.404    
          END DO                                                           RAD_CTL1.715    
                                                                           RAD_CTL1.716    
        END IF                                                             RAD_CTL1.717    
                                                                           RAD_CTL1.718    
CL 1.3.2 Atmospheric heating rates                                         RAD_CTL1.719    
                                                                           RAD_CTL1.720    
        IF (SF(232,1)) THEN                                                RAD_CTL1.721    
C         !  If the atmospheric SW heating rates are diagnosed they must   RAD_CTL1.722    
C         !    be scaled by cosz and converted from the SW radiation       ARR2F401.13     
C         !    increments per timestep.                                    ARR2F401.14     
                                                                           RAD_CTL1.740    
      DO LEVEL=1,STASH_LEVELS(1,-STLIST(10,STINDEX(1,232,1,im_index)))     GRB4F305.408    
            START_POINT=SI(232,1,im_index)+(LEVEL-1)*P_FIELD               GRB4F305.409    
            DO I = FIRST_POINT,LAST_POINT                                  ARR2F401.15     
                STASHWORK(START_POINT+I-1) = RADINCS(I+LEVEL*P_FIELD)      ARR2F401.16     
     &           * COS_ZENITH_ANGLE(I) /  SECS_PER_STEPim(atmos_im)        ARR2F401.17     
            END DO                                                         RAD_CTL1.746    
          END DO                                                           RAD_CTL1.747    
        END IF                                                             RAD_CTL1.748    
                                                                           RAD_CTL1.749    
CL 1.3.3 All other diagnostics                                             RAD_CTL1.750    
                                                                           RAD_CTL1.751    
C       !  Incoming solar :                                                RAD_CTL1.752    
        IF ( SF(207,1) ) THEN                                              RAD_CTL1.753    
          DO I=FIRST_POINT, LAST_POINT                                     RAD_CTL1.754    
          STASHWORK(SI(207,1,im_index)+I-1)=SC*SCS*COS_ZENITH_ANGLE(I)     GRB4F305.410    
          ENDDO                                                            RAD_CTL1.756    
        ENDIF                                                              RAD_CTL1.757    
                                                                           RAD_CTL1.758    
        CALL EXTDIAG(STASHWORK,SI(1,1,im_index),SF(1,1),201,NITEMS,        GRB4F305.411    
     &                STASHLEN,ROW_LENGTH,                                 RAD_CTL1.760    
     &                STLIST,LEN_STLIST,STINDEX(1,1,1,im_index),2,         GRB4F305.412    
     &                STASH_LEVELS, NUM_STASH_LEVELS+1,                    RAD_CTL1.762    
     &                STASH_PSEUDO_LEVELS, NUM_STASH_PSEUDO,               RAD_CTL1.763    
     &                im_ident,1,                                          GPB1F403.1509   
*CALL ARGPPX                                                               GPB1F403.1510   
     &                ICODE, CMESSAGE)                                     RAD_CTL1.764    
                                                                           RAD_CTL1.765    
                                                                           RAD_CTL1.766    
CL 1.3.4 Call STASH to process output.  Even on non-radiation timesteps    WI200893.23     
CL       (neither LW nor SW called), STASH is called for certain           WI200893.24     
CL       radiation diagnostics from CLD_CTL.                               WI200893.25     
                                                                           RAD_CTL1.769    
      IF(LTIMER) THEN                                                      RAD_CTL1.770    
        CALL TIMER('STASH   ',3)                                           RAD_CTL1.771    
      END IF                                                               RAD_CTL1.772    
                                                                           RAD_CTL1.773    
      CALL STASH(a_sm,a_im,1,STASHWORK,                                    GKR0F305.975    
*CALL ARGSIZE                                                              @DYALLOC.3059   
*CALL ARGD1                                                                @DYALLOC.3060   
*CALL ARGDUMA                                                              @DYALLOC.3061   
*CALL ARGDUMO                                                              @DYALLOC.3062   
*CALL ARGDUMW                                                              GKR1F401.254    
*CALL ARGSTS                                                               @DYALLOC.3063   
*CALL ARGPPX                                                               GKR0F305.976    
     &           ICODE,CMESSAGE)                                           @DYALLOC.3067   
                                                                           RAD_CTL1.775    
      IF(LTIMER) THEN                                                      RAD_CTL1.776    
        CALL TIMER('STASH   ',4)                                           RAD_CTL1.777    
      END IF                                                               RAD_CTL1.778    
                                                                           RAD_CTL1.779    
                                                                           RAD_CTL1.780    
C -----------------------------------------------------                    RAD_CTL1.781    
CL                                                                         RAD_CTL1.782    
CL--- SECTION 2 --- LONGWAVE RADIATION ----------------                    RAD_CTL1.783    
CL                                                                         RAD_CTL1.784    
CL                                                                         RAD_CTL1.785    
*IF DEF,FRADIO                                                             GGH3F401.31     
CL  FIND OFFSET TO POINT TO LW IN RADINCS ARRAY                            RAD_CTL1.787    
        OFFSET=(P_FIELDDA*(P_LEVELS+3)+511)/512*512                        ARE2F404.174    
*ELSE                                                                      RAD_CTL1.789    
CL  SET  OFFSET TO 0, SW AND LW USE SAME WORK SPACE                        RAD_CTL1.790    
        OFFSET=0                                                           RAD_CTL1.791    
*ENDIF                                                                     RAD_CTL1.792    
CL 2.0 If not long wave timestep then:                                     RAD_CTL1.793    
                                                                           RAD_CTL1.794    
      IF(.NOT.L_LW_RADIATE) THEN                                           RAD_CTL1.795    
                                                                           RAD_CTL1.796    
*IF -DEF,FRADIO                                                            GGH3F401.32     
CL Read in LW radiation increments                                         RAD_CTL1.798    
        LEN=(P_FIELDDA*(P_LEVELS+3)+511)/512*512  !no words for LW incs    ARE2F404.175    
                                                                           RAD_CTL1.800    
        NFTSWAP=16                                                         RAD_CTL1.801    
        CALL SETPOS(NFTSWAP,LEN,ICODE)                                     GTD0F400.118    
        CALL BUFFIN(NFTSWAP,RADINCS,LEN,LEN_IO,A_IO)                       RAD_CTL1.803    
                                                                           RAD_CTL1.804    
C Error check                                                              RAD_CTL1.805    
                                                                           RAD_CTL1.806    
        IF(A_IO.NE.-1.0.OR.LEN_IO.NE.(LEN)) THEN                           RAD_CTL1.807    
          CMESSAGE=' RAD_CTL :Paging IO Error '                            RAD_CTL1.808    
          ICODE=1                                                          RAD_CTL1.809    
          RETURN                                                           RAD_CTL1.810    
        END IF                                                             RAD_CTL1.811    
*ENDIF                                                                     RAD_CTL1.812    
                                                                           RAD_CTL1.813    
      END IF                                                               RAD_CTL1.814    
                                                                           RAD_CTL1.815    
CL 2.2 Long wave radiation steps                                           RAD_CTL1.816    
                                                                           RAD_CTL1.817    
      IF(L_LW_RADIATE)THEN                                                 RAD_CTL1.818    
                                                                           RAD_CTL1.819    
        IF(LTIMER) THEN                                                    RAD_CTL1.830    
      CALL TIMER('LW_RAD',5)                                               GPB1F401.21     
          CALL TIMER('LWRAD   ',3)                                         RAD_CTL1.831    
        END IF                                                             RAD_CTL1.832    
                                                                           RAD_CTL1.833    
! Effective surface radiative temperature                                  ARE2F404.176    
        DO I=1,P_FIELD                                                     ARE2F404.177    
          TSTAR_RAD(I) = D1(JTSTAR+I-1)                                    ARE2F404.178    
        END DO                                                             ARE2F404.179    
        IF ( L_MOSES_II ) THEN                                             ARE2F404.180    
          DO L=LAND1,LAND1+LAND_PTS-1                                      ABX1F405.162    
            I = LAND_LIST(L)                                               ARE2F404.182    
            J = (NTYPE-1)*LAND_FIELD + L - 1                               ARE2F404.183    
            TSTAR_RAD(I) = SNOW_FRAC(I)*D1(JTSTAR_TYP+J)**4                ARE2F404.184    
          ENDDO                                                            ARE2F404.185    
          DO N=1,NTYPE-1                                                   ARE2F404.186    
            DO L=LAND1,LAND1+LAND_PTS-1                                    ABX1F405.163    
              I = LAND_LIST(L)                                             ARE2F404.188    
              J = (N-1)*LAND_FIELD + L - 1                                 ARE2F404.189    
              TSTAR_RAD(I) = TSTAR_RAD(I) + (1. - SNOW_FRAC(I)) *          ARE2F404.190    
     &                            D1(JFRAC_TYP+J)*D1(JTSTAR_TYP+J)**4      ARE2F404.191    
            ENDDO                                                          ARE2F404.192    
          ENDDO                                                            ARE2F404.193    
          DO L=LAND1,LAND1+LAND_PTS-1                                      ABX1F405.164    
            I = LAND_LIST(L)                                               ARE2F404.195    
            TSTAR_RAD(I) = TSTAR_RAD(I)**0.25                              ARE2F404.196    
          ENDDO                                                            ARE2F404.197    
        ENDIF                                                              ARE2F404.198    
                                                                           ARE2F404.199    
CL 2.2.1 LWRAD in segments                                                 AAD1F304.139    
                                                                           AAD1F304.140    
*IF -DEF,MPP                                                               APBBF401.47     
      STEP = POINTS/(NCPU*A_LW_SEGMENTS)                                   AAD1F304.141    
      DO I = 1,NCPU*A_LW_SEGMENTS                                          AAD1F304.142    
        SEG_POINTS = STEP                                                  AAD1F304.143    
        IF (I .EQ. NCPU*A_LW_SEGMENTS) THEN                                AAD1F304.144    
          SEG_POINTS = POINTS-STEP*(NCPU*A_LW_SEGMENTS-1)                  AAD1F304.145    
        END IF                                                             AAD1F304.146    
        JS_LOCAL(I) = JS                                                   AAD1F304.147    
        FP_LOCAL(I) = FIRST_POINT                                          AAD1F304.148    
        SP_LOCAL(I) = SEG_POINTS                                           AAD1F304.149    
        FIRST_POINT = FIRST_POINT+STEP                                     AAD1F304.150    
        JS = JS+STEP                                                       AAD1F304.151    
      ENDDO                                                                ADB1F400.239    
*ELSE                                                                      APBBF401.48     
! Switch off LW radiation calculation over halo areas - we can fill in     APBBF401.49     
! afterwards with a swapbounds                                             APBBF401.50     
                                                                           APBBF401.51     
        STEP=ROW_LENGTH-2*EW_Halo                                          APBBF401.52     
        DO I=1,POINTS/ROW_LENGTH                                           APBBF401.53     
          JS_LOCAL(I)=JS+EW_Halo                                           APBBF401.54     
          FP_LOCAL(I)=FIRST_POINT+EW_Halo                                  APBBF401.55     
          SP_LOCAL(I)=STEP                                                 APBBF401.56     
          FIRST_POINT=FIRST_POINT+ROW_LENGTH                               APBBF401.57     
          JS=JS+ROW_LENGTH                                                 APBBF401.58     
        ENDDO                                                              APBBF401.59     
                                                                           APBBF401.60     
! QAN fix : Set RADINCS array to zero everywhere - to ensure the           APBBF401.61     
! unset halos don't contain anything dangerous - ie. NaNs                  APBBF401.62     
         DO LEVEL=0,P_LEVELS+1                                             ARE2F404.200    
           DO I=1,P_FIELD                                                  APBBF401.64     
             RADINCS(OFFSET+I+LEVEL*P_FIELD)=0.0                           APBBF401.65     
           ENDDO                                                           APBBF401.66     
         ENDDO                                                             APBBF401.67     
         DO I=1,P_FIELD                                                    APBBF401.68     
           OLR(I)=0.0                                                      APBBF401.69     
         ENDDO                                                             APBBF401.70     
                                                                           APBBF401.71     
*ENDIF                                                                     APBBF401.72     
!                                                                          ADB1F400.240    
!                                                                          ADB1F400.241    
!                                                                          ADB1F400.242    
!     CALL AN APPROPRIATE TOP LEVEL ROUTINE AS DIRECTED BY H_SECT.         ADB1F400.243    
!                                                                          ADB1F400.244    
      IF ( (H_SECT(2).EQ.'01A').OR.                                        ADB2F404.1015   
     &     (H_SECT(2).EQ.'01B').OR.                                        ADB2F404.1016   
     &     (H_SECT(2).EQ.'01C') ) THEN                                     ADB2F404.1017   
!                                                                          ADB1F400.246    
! NB Cloud extent modification not available with this option.             ASK1F405.271    
!       THE ORIGINAL CODE (6 OR 9-BAND VERSION):                           ADB1F405.543    
*IF DEF,MACRO                                                              AAD1F304.153    
CFPP$ CNCALL                                                               AAD1F304.154    
*ENDIF                                                                     AAD1F304.155    
*IF -DEF,MPP                                                               APBBF401.73     
        DO I = 1,NCPU*A_LW_SEGMENTS                                        ADB1F400.248    
*ELSE                                                                      APBBF401.74     
        DO I=1,POINTS/ROW_LENGTH                                           APBBF401.75     
*ENDIF                                                                     APBBF401.76     
!                                                                          ADB1F400.249    
          CALL LWRAD(                                                      ADB1F400.250    
                                                                           RAD_CTL1.835    
C Input data                                                               RAD_CTL1.836    
     &      D1(JQ(1)+JS_LOCAL(I)),CO2_MMR,OZONE_1(FP_LOCAL(I),1),          ADB1F400.251    
     &      N2OMMR, CH4MMR, C11MMR, C12MMR,                                ADB1F400.252    
     &      D1(JTHETA(1)+JS_LOCAL(I)),                                     ADB1F400.253    
     &      D1(JP_EXNER(1)+JS_LOCAL(I)),TSTAR_RAD(FP_LOCAL(I)),            ARE2F404.201    
     &      D1(JPSTAR+JS_LOCAL(I)),AKH,BKH,                                ADB1F400.255    
     &      A_LEVDEPC(JAK),A_LEVDEPC(JBK),                                 ADB1F400.256    
     &      D1(JICE_FRACTION+JS_LOCAL(I)),                                 ADB1F400.257    
     &      CLOUD_FRACTION(FP_LOCAL(I),1),                                 ADB1F400.258    
     &      D1(JQCL(1)+JS_LOCAL(I)),D1(JQCF(1)+JS_LOCAL(I)),               ADB1F400.259    
     &      D1(JCCA(1)+JS_LOCAL(I)),D1(JCCLWP+JS_LOCAL(I)),                AJX0F404.13     
     &      D1(JCCB+JS_LOCAL(I)),D1(JCCT+JS_LOCAL(I)),                     ADB1F400.261    
     &      D1(JLAND+JS_LOCAL(I)),                                         ADB1F400.262    
                                                                           RAD_CTL1.845    
C Size and control variables                                               RAD_CTL1.846    
                                                                           RAD_CTL1.847    
     &      SECS_PER_STEPim(atmos_im),LW_TABLES,                           ADB1F400.263    
                                                                           RAD_CTL1.849    
C Diagnostics out                                                          RAD_CTL1.850    
                                                                           RAD_CTL1.851    
     &      STASHWORK(JS_LOCAL(I)+SI(204,2,im_index)), SF(204,2),          ADB1F400.264    
     &      STASHWORK(JS_LOCAL(I)+SI(206,2,im_index)), SF(206,2),          ADB1F400.265    
     &      STASHWORK(JS_LOCAL(I)+SI(207,2,im_index)), SF(207,2),          ADB1F400.266    
     &      STASHWORK(JS_LOCAL(I)+SI(208,2,im_index)), SF(208,2),          ADB1F400.267    
     &      L_CLOUD_WATER_PARTITION,                                       AYY1F404.262    
     &      SP_LOCAL(I),P_LEVELS,CLOUD_LEVELS,                             ADB1F400.268    
     &      Q_LEVELS,OZONE_LEVELS,                                         ADB1F400.269    
     &      P_FIELD,                                                       ADB1F400.270    
                                                                           RAD_CTL1.859    
C Output data                                                              RAD_CTL1.860    
                                                                           RAD_CTL1.861    
     &      OLR(FP_LOCAL(I)),                                              ADB1F400.271    
     &      STASHWORK(SI(203,2,im_index)+JS_LOCAL(I)),                     ADB1F400.272    
     &      RADINCS(FP_LOCAL(I)+OFFSET)                                    ADB1F400.273    
     &      )                                                              ADB1F400.274    
!                                                                          ADB1F400.275    
          ENDDO                                                            ADB1F400.276    
!                                                                          ADB1F400.277    
!                                                                          ADB1F400.278    
      ELSE IF (H_SECT(2).EQ.'03A') THEN                                    ADB2F404.1018   
!                                                                          ADB1F400.280    
!                                                                          ADB1F400.281    
!         GENERAL TWO-STREAM CODE:                                         ADB2F404.1019   
!                                                                          ADB1F400.296    
!                                                                          ADB1F400.297    
!                                                                          ADB1F400.301    
*IF DEF,MACRO                                                              ADB1F400.302    
CFPP$ CNCALL                                                               ADB1F400.303    
*ENDIF                                                                     ADB1F400.304    
*IF -DEF,MPP                                                               APBBF401.77     
          DO I = 1,NCPU*A_LW_SEGMENTS                                      ADB1F400.305    
*ELSE                                                                      APBBF401.78     
        DO I=1,POINTS/ROW_LENGTH                                           APBBF401.79     
*ENDIF                                                                     APBBF401.80     
!                                                                          ADB1F402.606    
!           Set array size to an odd number to avoid memory conflicts.     ADB2F403.3      
            RAD_ARRAY_SIZE=2*(SP_LOCAL(I)/2)+1                             ADB2F403.4      
!                                                                          ADB2F403.5      
!           Set the first points of the arrays of sulphates to be used.    ADB1F402.607    
!           A separate assignment is necessary since this array will       ADB1F402.608    
!           not be of the full size unless the sulphur cycle is on.        ADB1F402.609    
            IF (L_USE_SULPC_DIRECT .OR. L_USE_SULPC_INDIRECT_LW) THEN      AAJ1F404.13     
               FIRST_POINT_SULPC=FP_LOCAL(I)                               ADB1F402.611    
            ELSE                                                           ADB1F402.612    
               FIRST_POINT_SULPC=1                                         ADB1F402.613    
            ENDIF                                                          ADB1F402.614    
!           Similarly for the carbon cycle                                 ACN2F405.81     
            L_CO2_3D = L_CO2_INTERACTIVE                                   ACN2F405.82     
            IF (L_CO2_INTERACTIVE) THEN                                    ACN2F405.83     
              FIRST_POINT_CO2=FP_LOCAL(I)                                  ACN2F405.84     
            ELSE                                                           ACN2F405.85     
              FIRST_POINT_CO2=1                                            ACN2F405.86     
            ENDIF                                                          ACN2F405.87     
!                                                                          ADB1F400.306    
            IF (L_USE_SOOT_DIRECT) THEN                                    ALR3F405.58     
               FIRST_POINT_SOOT=FIRST_POINT                                ALR3F405.59     
            ELSE                                                           ALR3F405.60     
               FIRST_POINT_SOOT=1                                          ALR3F405.61     
            ENDIF                                                          ALR3F405.62     
!                                                                          ADB2F404.1020   
!                                                                          ADB2F404.1021   
!                                                                          ADB2F404.1022   
            CALL R2_LWRAD(ICODE,                                           ADB1F400.307    
                                                                           ADB1F400.308    
C Input data                                                               ADB1F400.309    
     &        D1(JQ(1)+JS_LOCAL(I)),CO2_MMR,OZONE_1(FP_LOCAL(I),1),        ADB1F400.310    
     &        CO2_DIM1, CO2_DIM2, CO2_3D(FIRST_POINT_CO2,1),               ACN2F405.88     
     &        L_CO2_3D,                                                    ACN2F405.89     
     &        N2OMMR, CH4MMR, C11MMR, C12MMR, C113MMR,                     ADB1F405.544    
     &        HCFC22MMR, HFC125MMR, HFC134AMMR,                            ADB1F405.545    
     &        D1(JTHETA(1)+JS_LOCAL(I)),                                   ADB1F400.311    
     &        D1(JP_EXNER(1)+JS_LOCAL(I)),TSTAR_RAD(FP_LOCAL(I)),          ARE2F404.202    
     &        D1(JPSTAR+JS_LOCAL(I)),AKH,BKH,                              ADB1F400.313    
     &        A_LEVDEPC(JAK),A_LEVDEPC(JBK),                               ADB1F400.314    
!                       Options for treating clouds                        ADB1F402.862    
     &        L_GLOBAL_CLOUD_TOP, GLOBAL_CLOUD_TOP,                        ADB1F402.863    
!                       Stratiform Cloud Fields                            ADB1F400.315    
     &        L_CLOUD_WATER_PARTITION,                                     AYY1F404.263    
     &        AREA_CLOUD_FRACTION(FP_LOCAL(I),1),                          ASK1F405.272    
     &        CLOUD_FRACTION(FP_LOCAL(I),1),                               ADB1F400.316    
     &        D1(JQCL(1)+JS_LOCAL(I)),D1(JQCF(1)+JS_LOCAL(I)),             ADB1F400.317    
!                       Convective Cloud Fields                            ADB1F400.318    
     &        D1(JCCA(1)+JS_LOCAL(I)),D1(JCCLWP+JS_LOCAL(I)),              AJX0F404.14     
     &        D1(JCCB+JS_LOCAL(I)),D1(JCCT+JS_LOCAL(I)),                   ADB1F400.320    
     &        L_3D_CCA,                                                    AJX0F404.15     
!                       Surface Fields                                     ADB1F400.321    
     &        D1(JLAND+JS_LOCAL(I)),                                       ADB1F400.322    
     &        D1(JICE_FRACTION+JS_LOCAL(I)),                               ADB1F400.323    
     &        D1(JSNODEP+JS_LOCAL(I)),                                     ADB1F402.615    
!                       Aerosol Fields                                     ADB1F400.324    
     &        L_CLIMAT_AEROSOL, BL_LEVELS,                                 ADB1F402.616    
     &        L_USE_SULPC_DIRECT, L_USE_SULPC_INDIRECT_LW,                 AAJ1F404.14     
     &        SULP_DIM1,SULP_DIM2,                                         ADB1F401.826    
     &        ACCUM_SULPHATE(FIRST_POINT_SULPC, 1),                        ADB1F402.617    
     &        AITKEN_SULPHATE(FIRST_POINT_SULPC, 1),                       ADB1F402.618    
     &        DISS_SULPHATE(FIRST_POINT_SULPC, 1),                         ADB2F404.1024   
     &        L_USE_SOOT_DIRECT,                                           ALR3F405.63     
     &        SOOT_DIM1,SOOT_DIM2,                                         ALR3F405.64     
     &        FRESH_SOOT(FIRST_POINT_SOOT, 1),                             ALR3F405.65     
     &        AGED_SOOT(FIRST_POINT_SOOT, 1),                              ALR3F405.66     
!                       Level of tropopause                                ADB1F402.619    
     &        TRINDX(FP_LOCAL(I))                                          ADB2F404.1025   
                                                                           ADB1F400.326    
C Size and control variables                                               ADB1F400.327    
                                                                           ADB1F400.328    
!                       Spectral data                                      ADB2F404.1026   
*CALL LWSARG3A                                                             ADB2F404.1027   
!                                                                          ADB2F404.1028   
!                       Algorithmic options                                ADB2F404.1029   
*CALL LWCARG3A                                                             ADB2F404.1030   
     &        ,                                                            ADB2F404.1031   
     &        SECS_PER_STEPim(atmos_im),                                   ADB2F404.1032   
C Diagnostics out                                                          ADB1F400.330    
                                                                           ADB1F400.331    
     &        STASHWORK(JS_LOCAL(I)+SI(204,2,im_index)), SF(204,2),        ADB1F400.332    
     &        STASHWORK(JS_LOCAL(I)+SI(206,2,im_index)), SF(206,2),        ADB1F400.333    
     &        STASHWORK(JS_LOCAL(I)+SI(207,2,im_index)), SF(207,2),        ADB1F400.334    
     &        STASHWORK(JS_LOCAL(I)+SI(208,2,im_index)), SF(208,2),        ADB1F400.335    
     &        STASHWORK(JS_LOCAL(I)+SI(233,2,im_index)), SF(233,2),        ADB1F400.336    
     &        STASHWORK(JS_LOCAL(I)+SI(237,2,im_index)), SF(237,2),        ADB2F404.1033   
     &        STASHWORK(JS_LOCAL(I)+SI(238,2,im_index)), SF(238,2),        ADB2F404.1034   
!                       Physical Dimensions                                ADB1F400.337    
     &        SP_LOCAL(I),P_LEVELS,CLOUD_LEVELS,                           ADB1F400.338    
     &        Q_LEVELS,OZONE_LEVELS,                                       ADB1F400.339    
     &        P_FIELD, RAD_ARRAY_SIZE, P_LEVELS, 1,N_CCA_LEV,              AJX0F404.16     
                                                                           ADB1F400.350    
C Output data                                                              ADB1F400.351    
                                                                           ADB1F400.352    
     &        OLR(FP_LOCAL(I)),                                            ADB1F400.353    
     &        STASHWORK(SI(203,2,im_index)+JS_LOCAL(I)),                   ADB1F400.354    
     &        RADINCS(FP_LOCAL(I)+OFFSET)                                  ADB1F400.355    
     &        )                                                            ADB1F400.356    
            IF (ICODE.NE.0) RETURN                                         ADB1F401.828    
!                                                                          ADB1F400.357    
          ENDDO                                                            ADB1F400.358    
!                                                                          ADB1F400.359    
      ELSE                                                                 ADB2F404.1035   
!                                                                          ADB2F404.1036   
        ICODE=0                                                            ADB2F404.1037   
        CMESSAGE='Unknown version of LW radiation in RAD_CTL.'             ADB2F404.1038   
        RETURN                                                             ADB2F404.1039   
!                                                                          ADB2F404.1040   
      ENDIF                                                                ADB2F404.1041   
                                                                           ADB1F400.361    
                                                                           ADB1F400.362    
                                                                           RAD_CTL1.864    
        IF(LTIMER) THEN                                                    RAD_CTL1.865    
          CALL TIMER('LWRAD   ',4)                                         RAD_CTL1.866    
      CALL TIMER('LW_RAD',6)                                               GPB1F401.22     
        END IF                                                             RAD_CTL1.867    
                                                                           RAD_CTL1.868    
      FIRST_POINT = START_POINT_NO_HALO                                    APBBF401.44     
      LAST_POINT  = END_P_POINT_NO_HALO                                    APBBF401.45     
      POINTS      = LAST_POINT-FIRST_POINT+1                               APBBF401.46     
C                                                                          RAD_CTL1.879    
C -----------------------------------------------------                    RAD_CTL1.880    
C                                                                          RAD_CTL1.881    
                                                                           RAD_CTL1.882    
CL Store surface radiative temperature                                     ARE2F404.203    
                                                                           ARE2F404.204    
      DO I=FIRST_POINT,LAST_POINT                                          ARE2F404.205    
        RADINCS(I+(P_LEVELS+1)*P_FIELD+OFFSET) = TSTAR_RAD(I)              ARE2F404.206    
      END DO                                                               ARE2F404.207    
                                                                           ARE2F404.208    
*IF -DEF,FRADIO                                                            GGH3F401.33     
CL 2.2.2 Write out LW radiation increments                                 RAD_CTL1.884    
        LEN=(P_FIELDDA*(P_LEVELS+3)+511)/512*512  !no words for LW incs    ARE2F404.209    
        NFTSWAP=16                                                         RAD_CTL1.886    
        CALL SETPOS(NFTSWAP,LEN,ICODE)                                     GTD0F400.119    
        CALL BUFFOUT(NFTSWAP,RADINCS,LEN,LEN_IO,A_IO)                      RAD_CTL1.888    
                                                                           RAD_CTL1.889    
C Error check                                                              RAD_CTL1.890    
                                                                           RAD_CTL1.891    
      IF(A_IO.NE.-1.0.OR.LEN_IO.NE.(LEN)) THEN                             RAD_CTL1.892    
        CMESSAGE=' RAD_CTL :Paging IO Error '                              RAD_CTL1.893    
        ICODE=2                                                            RAD_CTL1.894    
        RETURN                                                             RAD_CTL1.895    
      END IF                                                               RAD_CTL1.896    
*ENDIF                                                                     RAD_CTL1.897    
                                                                           RAD_CTL1.898    
      IF (LEMCORR) THEN                                                    GSS1F304.775    
C                                                                          RAD_CTL1.900    
C SUM LONG WAVE FLUXES INTO THE ATMOSPHERE                                 RAD_CTL1.901    
C ADD INTO THE NET DIABATIC FLUXES INTO THE                                RAD_CTL1.902    
C ATMOSPHERE FOR USE IN THE ENERGY CORRECTION                              RAD_CTL1.903    
C PROCEDURE                                                                RAD_CTL1.904    
C                                                                          RAD_CTL1.905    
      DO I=FIRST_POINT,LAST_POINT                                          RAD_CTL1.906    
       NET_ATM_FLUX(I) = - OLR(I)                                          RAD_CTL1.907    
     &                   - RADINCS(I+OFFSET)                               RAD_CTL1.908    
     &                   - STASHWORK(SI(203,2,im_index)+I-1)               GRB4F305.419    
      END DO                                                               RAD_CTL1.910    
C                                                                          RAD_CTL1.911    
      IF (LTIMER) THEN                                                     RAD_CTL1.912    
        CALL TIMER ('FLX_DIAG',3)                                          RAD_CTL1.913    
      END IF                                                               RAD_CTL1.914    
C                                                                          RAD_CTL1.915    
      CALL FLUX_DIAG(NET_ATM_FLUX,COS_P_LATITUDE,                          APB5F401.154    
     &               P_FIELD,FIRST_POINT,POINTS,                           APB5F401.155    
     &               1.0,A_LW_RADSTEP*SECS_PER_STEPim(atmos_im),           APB5F401.156    
     &               D1(JNET_FLUX))                                        GSM3F404.48     
C                                                                          RAD_CTL1.919    
      IF (LTIMER) THEN                                                     RAD_CTL1.920    
        CALL TIMER ('FLX_DIAG',4)                                          RAD_CTL1.921    
      END IF                                                               RAD_CTL1.922    
C                                                                          RAD_CTL1.923    
      END IF     !     LEMCORR                                             GSS1F304.776    
C                                                                          GSS1F304.777    
CL End of branch depending whether longwave radiation is called            RAD_CTL1.925    
                                                                           RAD_CTL1.926    
      END IF                                                               RAD_CTL1.927    
                                                                           RAD_CTL1.928    
C                                                                          RAD_CTL1.929    
CL 2.3 add LW radiative heating to temperatures                            WI200893.31     
                                                                           RAD_CTL1.931    
      DO 23 LEVEL=1,P_LEVELS                                               RAD_CTL1.932    
        DO I=FIRST_POINT,LAST_POINT                                        RAD_CTL1.933    
          D1(JTHETA(LEVEL)+I-1)=                                           RAD_CTL1.934    
     &        D1(JTHETA(LEVEL)+I-1)+RADINCS(I+LEVEL*P_FIELD+OFFSET)        RAD_CTL1.935    
!                                                                          ARN1F404.136    
!!     Add LW heating rates for layers 1 to BL_LEVELS for output           ARN1F404.137    
!!     for A03_6A                                                          ARN1F404.138    
!                                                                          ARN1F404.139    
          IF (L_RADHEAT .AND. LEVEL .LE. BL_LEVELS) THEN                   ARN1F404.140    
            RADHEAT_RATE(I,LEVEL) = RADHEAT_RATE(I,LEVEL)                  ARN1F404.141    
     &          + RADINCS(I+LEVEL*P_FIELD+OFFSET)                          ARN1F404.142    
     &          / SECS_PER_STEPim(atmos_im)                                ARN1F404.143    
          ENDIF                                                            ARN1F404.144    
        END DO                                                             RAD_CTL1.936    
 23   CONTINUE                                                             RAD_CTL1.937    
                                                                           RAD_CTL1.938    
CL Set up total net down surface radiation flux in SURF_RADFLUX            RAD_CTL1.939    
                                                                           RAD_CTL1.940    
      DO I=FIRST_POINT,LAST_POINT                                          RAD_CTL1.941    
        SURF_RADFLUX(I)=RADINCS(I+OFFSET)+SURF_RADFLUX(I)                  RAD_CTL1.942    
      END DO                                                               RAD_CTL1.943    
                                                                           ARE2F404.210    
CL Set up total net down surface radiation flux for snow-free and          ARE2F404.211    
CL snow-covered fractions of gridboxes                                     ARE2F404.212    
                                                                           ARE2F404.213    
      IF ( L_MOSES_II ) THEN                                               ARE2F404.214    
CL Set the SW+LW flux over the snow-free surface to the gridbox mean       ABX1F405.165    
CL SW+LW flux (valid for sea points but corrected below for land points)   ABX1F405.166    
        DO I=FIRST_POINT,LAST_POINT                                        ABX1F405.167    
          RAD_NO_SNOW(I) = SURF_RADFLUX(I)                                 ABX1F405.168    
        ENDDO                                                              ABX1F405.169    
                                                                           ABX1F405.170    
CL Derive fluxes over snow-free and snow-covered fraction on land points   ABX1F405.171    
        DO L=LAND1,LAND1+LAND_PTS-1                                        ABX1F405.172    
          I = LAND_LIST(L)                                                 ABX1F405.173    
          RAD_NO_SNOW(I) = RAD_NO_SNOW(I) + RADINCS(I+OFFSET)              ABX1F405.174    
     &                                          + SBCON*TSTAR_RAD(I)**4    ABX1F405.175    
          RAD_SNOW(I) = RAD_SNOW(I) + RADINCS(I+OFFSET)                    ABX1F405.176    
     &                                          + SBCON*TSTAR_RAD(I)**4    ABX1F405.177    
        ENDDO                                                              ABX1F405.178    
        DO N=1,NTYPE-1                                                     ARE2F404.221    
          DO L=LAND1,LAND1+LAND_PTS-1                                      ABX1F405.179    
            I = LAND_LIST(L)                                               ARE2F404.223    
            J = (N-1)*LAND_FIELD + L - 1                                   ARE2F404.224    
            RAD_NO_SNOW(I) = RAD_NO_SNOW(I) -                              ARE2F404.225    
     &                        D1(JFRAC_TYP+J)*SBCON*D1(JTSTAR_TYP+J)**4    ARE2F404.226    
          ENDDO                                                            ARE2F404.227    
        ENDDO                                                              ARE2F404.228    
        DO L=LAND1,LAND1+LAND_PTS-1                                        ABX1F405.180    
          I = LAND_LIST(L)                                                 ARE2F404.230    
          J = (NTYPE-1)*LAND_FIELD + L - 1                                 ARE2F404.231    
          RAD_SNOW(I) = RAD_SNOW(I) - SBCON*D1(JTSTAR_TYP+J)**4            ABX1F405.181    
        ENDDO                                                              ARE2F404.234    
CL Overwrite SURF_RADFLUX with the gridbox average for land points         ARE1F405.9      
        DO L=LAND1,LAND1+LAND_PTS-1                                        ARE1F405.10     
          I = LAND_LIST(L)                                                 ARE1F405.11     
          SURF_RADFLUX(I) = (1. - SNOW_FRAC(I))*RAD_NO_SNOW(I)             ARE1F405.12     
     &                              + SNOW_FRAC(I)*RAD_SNOW(I)             ARE1F405.13     
        END DO                                                             ARE1F405.14     
                                                                           ARE1F405.15     
                                                                           ARE1F405.16     
      ENDIF                                                                ARE2F404.235    
                                                                           RAD_CTL1.944    
CL 2.4 Copy diagnostic information to STASHWORK for processing.            RAD_CTL1.945    
                                                                           RAD_CTL1.946    
      IF(L_LW_RADIATE) THEN                                                RAD_CTL1.947    
                                                                           RAD_CTL1.948    
CL 2.4.1 Surface fluxes                                                    RAD_CTL1.949    
                                                                           RAD_CTL1.950    
        IF(SF(202,2)) THEN                                                 RAD_CTL1.951    
                                                                           RAD_CTL1.952    
CL  Surface radiative flux over ice covered fraction                       RAD_CTL1.953    
                                                                           RAD_CTL1.954    
        CALL COPYDIAG (STASHWORK(SI(202,2,im_index)),RADINCS(1+OFFSET),    GRB4F305.420    
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   GPB1F403.1260   
     &        im_ident,2,202,                                              GPB1F403.1261   
*CALL ARGPPX                                                               GPB1F403.1262   
     &        ICODE,CMESSAGE)                                              GPB1F403.1263   
                                                                           GPB1F403.1264   
        IF (ICODE .GT. 0) RETURN                                           GPB1F403.1265   
                                                                           RAD_CTL1.957    
        END IF                                                             RAD_CTL1.958    
                                                                           RAD_CTL1.959    
        IF(SF(201,2)) THEN                                                 RAD_CTL1.960    
                                                                           RAD_CTL1.961    
CL  Total Surface radiative flux                                           RAD_CTL1.962    
                                                                           RAD_CTL1.963    
          DO I = FIRST_POINT,LAST_POINT                                    RAD_CTL1.964    
              STASHWORK(SI(201,2,im_index)+I-1) = RADINCS(I+OFFSET)+       GRB4F305.421    
     &                               STASHWORK(SI(203,2,im_index)+I-1)     GRB4F305.422    
          END DO                                                           RAD_CTL1.967    
                                                                           RAD_CTL1.968    
        END IF                                                             RAD_CTL1.969    
        IF(SF(232,2)) THEN                                                 RAD_CTL1.970    
                                                                           RAD_CTL1.971    
CL 2.4.2  Long wave atmospheric heating rates from RADINCS                 RAD_CTL1.972    
                                                                           RAD_CTL1.973    
      CALL COPYDIAG_3D (STASHWORK(SI(232,2,im_index)),                     GRB4F305.423    
     &                  RADINCS(1+P_FIELD+OFFSET),                         GRB4F305.424    
     &         FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,P_LEVELS,         RAD_CTL1.975    
     &         STLIST(1,STINDEX(1,232,2,im_index)),LEN_STLIST,             GRB4F305.425    
     &         STASH_LEVELS,NUM_STASH_LEVELS+1,                            GPB1F403.1266   
     &         im_ident,2,232,                                             GPB1F403.1267   
*CALL ARGPPX                                                               GPB1F403.1268   
     &         ICODE,CMESSAGE)                                             GPB1F403.1269   
                                                                           RAD_CTL1.978    
          IF(ICODE.GT.0) THEN                                              RAD_CTL1.979    
            RETURN                                                         RAD_CTL1.980    
          END IF                                                           RAD_CTL1.981    
                                                                           RAD_CTL1.982    
C Convert to heating rates from increments per timestep                    RAD_CTL1.983    
                                                                           RAD_CTL1.984    
          DO LEVEL = 1,                                                    GRB4F305.426    
     &           STASH_LEVELS(1,-STLIST(10,STINDEX(1,232,2,im_index)))     GRB4F305.427    
            START_POINT=SI(232,2,im_index)+(LEVEL-1)*P_FIELD               GRB4F305.428    
            DO I = 1,P_FIELD                                               RAD_CTL1.987    
              STASHWORK(START_POINT+I-1) = STASHWORK(START_POINT+I-1) /    RAD_CTL1.988    
     &                                   SECS_PER_STEPim(atmos_im)         ADR1F305.130    
            END DO                                                         RAD_CTL1.990    
                                                                           RAD_CTL1.991    
          END DO                                                           RAD_CTL1.992    
        END IF                                                             RAD_CTL1.993    
                                                                           RAD_CTL1.994    
CL 2.4.3 outgoing flux                                                     RAD_CTL1.995    
                                                                           RAD_CTL1.996    
        IF(SF(205,2)) THEN                                                 RAD_CTL1.997    
                                                                           RAD_CTL1.998    
CL  toa outgoing flux                                                      RAD_CTL1.999    
                                                                           RAD_CTL1.1000   
          CALL COPYDIAG (STASHWORK(SI(205,2,im_index)),OLR,                GRB4F305.429    
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   GPB1F403.1270   
     &        im_ident,2,205,                                              GPB1F403.1271   
*CALL ARGPPX                                                               GPB1F403.1272   
     &        ICODE,CMESSAGE)                                              GPB1F403.1273   
                                                                           GPB1F403.1274   
          IF (ICODE .GT. 0) RETURN                                         GPB1F403.1275   
                                                                           RAD_CTL1.1003   
        END IF                                                             RAD_CTL1.1004   
                                                                           RAD_CTL1.1005   
CL 2.4.4 All other diagnostics                                             RAD_CTL1.1006   
                                                                           RAD_CTL1.1007   
        CALL EXTDIAG(STASHWORK,SI(1,2,im_index),SF(1,2),201,NITEMS,        GRB4F305.430    
     &       STASHLEN,ROW_LENGTH,                                          RAD_CTL1.1009   
     &       STLIST,LEN_STLIST,STINDEX(1,1,2,im_index),2,STASH_LEVELS,     GRB4F305.431    
     &       NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS,                      RAD_CTL1.1011   
     &       NUM_STASH_PSEUDO,                                             GPB1F403.1511   
     &       im_ident,2,                                                   GPB1F403.1512   
*CALL ARGPPX                                                               GPB1F403.1513   
     &       ICODE,CMESSAGE)                                               GPB1F403.1514   
                                                                           RAD_CTL1.1013   
        IF(ICODE.GT.0) THEN                                                RAD_CTL1.1014   
          RETURN                                                           RAD_CTL1.1015   
        END IF                                                             RAD_CTL1.1016   
                                                                           RAD_CTL1.1017   
C  Here ends "IF(L_LW_RADIATE)"                                            RAD_CTL1.1018   
                                                                           RAD_CTL1.1019   
      ENDIF                                                                RAD_CTL1.1020   
*IF DEF,MPP                                                                APBBF401.81     
! Update halos of all fields updated by radiation                          APBBF401.82     
      CALL SWAPBOUNDS(RADINCS,ROW_LENGTH,P_ROWS,                           APBBF401.83     
     &                EW_Halo,NS_Halo,P_LEVELS+3)                          ABX1F405.182    
      CALL SWAPBOUNDS(RADINCS(OFFSET+1), ROW_LENGTH,P_ROWS,                APBBF401.85     
     &                EW_Halo,NS_Halo,P_LEVELS+2)                          ABX1F405.183    
      CALL SWAPBOUNDS(D1(JTHETA(1)),ROW_LENGTH,P_ROWS,                     APBBF401.87     
     &                EW_Halo,NS_Halo,P_LEVELS)                            APBBF401.88     
      CALL SWAPBOUNDS(SURF_RADFLUX,ROW_LENGTH,P_ROWS,                      APBBF401.89     
     &                EW_Halo,NS_Halo,1)                                   APBBF401.90     
      CALL SWAPBOUNDS(PHOTOSYNTH_ACT_RAD,ROW_LENGTH,P_ROWS,                ADR4F403.3      
     &                EW_Halo,NS_Halo,1)                                   ADR4F403.4      
      IF (L_RADHEAT) THEN                                                  ARN1F404.145    
        CALL SWAPBOUNDS(RADHEAT_RATE,ROW_LENGTH,P_ROWS,                    ARN1F404.146    
     &                EW_Halo,NS_Halo,BL_LEVELS)                           ARN1F404.147    
      ENDIF                                                                ARN1F404.148    
      IF (L_MOSES_II) THEN                                                 ABX1F405.184    
        CALL SWAPBOUNDS(RAD_SNOW,ROW_LENGTH,P_ROWS,                        ABX1F405.185    
     &                  EW_Halo,NS_Halo,1)                                 ABX1F405.186    
        CALL SWAPBOUNDS(RAD_NO_SNOW,ROW_LENGTH,P_ROWS,                     ABX1F405.187    
     &                  EW_Halo,NS_Halo,1)                                 ABX1F405.188    
      ENDIF                                                                ABX1F405.189    
*ENDIF                                                                     APBBF401.91     
                                                                           RAD_CTL1.1021   
CL 2.4.5 Call STASH to process output.  Even on non-radiation timesteps    WI200893.26     
CL       (neither LW nor SW called), STASH is called for certain           WI200893.27     
CL       radiation diagnostics from CLD_CTL.                               WI200893.28     
                                                                           RAD_CTL1.1024   
      IF(LTIMER) THEN                                                      RAD_CTL1.1025   
        CALL TIMER('STASH   ',3)                                           RAD_CTL1.1026   
      END IF                                                               RAD_CTL1.1027   
                                                                           RAD_CTL1.1028   
           CALL STASH(a_sm,a_im,2,STASHWORK,                               GKR0F305.977    
*CALL ARGSIZE                                                              @DYALLOC.3078   
*CALL ARGD1                                                                @DYALLOC.3079   
*CALL ARGDUMA                                                              @DYALLOC.3080   
*CALL ARGDUMO                                                              @DYALLOC.3081   
*CALL ARGDUMW                                                              GKR1F401.255    
*CALL ARGSTS                                                               @DYALLOC.3082   
*CALL ARGPPX                                                               GKR0F305.978    
     &                ICODE,CMESSAGE)                                      @DYALLOC.3086   
                                                                           RAD_CTL1.1030   
      IF(LTIMER) THEN                                                      RAD_CTL1.1031   
        CALL TIMER('STASH   ',4)                                           RAD_CTL1.1032   
      END IF                                                               RAD_CTL1.1033   
                                                                           RAD_CTL1.1034   
      RETURN                                                               RAD_CTL1.1035   
      END                                                                  RAD_CTL1.1036   
*ENDIF                                                                     RAD_CTL1.1037