*IF DEF,OCEAN                                                              @DYALLOC.4446   
C ******************************COPYRIGHT******************************    GTS2F400.7039   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.7040   
C                                                                          GTS2F400.7041   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.7042   
C restrictions as set forth in the contract.                               GTS2F400.7043   
C                                                                          GTS2F400.7044   
C                Meteorological Office                                     GTS2F400.7045   
C                London Road                                               GTS2F400.7046   
C                BRACKNELL                                                 GTS2F400.7047   
C                Berkshire UK                                              GTS2F400.7048   
C                RG12 2SZ                                                  GTS2F400.7049   
C                                                                          GTS2F400.7050   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.7051   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.7052   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.7053   
C Modelling at the above address.                                          GTS2F400.7054   
C ******************************COPYRIGHT******************************    GTS2F400.7055   
C                                                                          GTS2F400.7056   
CLL Subroutine OCN_CTL ------------------------------------------------    OCN_CTL.2      
CLL                                                                        OCN_CTL.3      
CLL Level 2 control routine                                                OCN_CTL.4      
CLL                                                                        OCN_CTL.5      
CLL version for CRAY YMP                                                   OCN_CTL.6      
CLL written by S. Ineson                                                   OCN_CTL.7      
CLL                                                                        OCN_CTL.8      
CLL code reviewed by :                                                     OCN_CTL.9      
CLL                                                                        OCN_CTL.10     
CLL version number 1. dated 00/00/00                                       OCN_CTL.11     
CLL programming standard :                                                 OCN_CTL.12     
CLL system components covered :                                            OCN_CTL.13     
CLL system task :                                                          OCN_CTL.14     
CLL                                                                        OCN_CTL.15     
CLL                                                                        OCN_CTL.16     
CLL                                                                        OCN_CTL.17     
CLL                                                                        OCN_CTL.18     
CLL Documentation :                                                        OCN_CTL.19     
CLL Modification : CALL OCN_LAST modified to CALL DIAG_PRT                 OCN_CTL.20     
CLL              :           7/12/92 G.Kelly                               OCN_CTL.21     
CLL              : Ice dynamics and ice thickness advection added.         JT161193.1      
CLL              :          31/12/93 J.Thomson                             JT161193.2      
CLL              : Extra *IF DEF ONOPOLO added to allow ocean models       JT051193.1      
CLL              : without sea ice at the north pole to run.               JT051193.2      
CLL              :           5/11/93 J.F.Thomson                           JT051193.3      
CLL 3.4  16/6/94 : Change CHARACTER*(*) to CHARACTER*(80) N.Farnon         ONF0F304.3      
CLL   3.4  18/5/94 Remove sea ice flux correction and split                OJT0F304.8      
CLL                haney forcing of ice from ocean. J F Thomson            OJT0F304.9      
!     3.5    16.01.95   Remove *IF dependency. R.Hill                      ORH1F305.5502   
CLL  3.5  07/06/95  Add CSUBMODL to satisfy TYPSTS.  RTHBarnes             GRB4F305.319    
CLL  4.0           Correct logic of sea ice haney forcing. J.F.Crossley    OJC3F400.1      
CLL  4.0   3/7/95   Add call to new subroutine INIT_OCEAN_ICE and          OJC2F400.60     
CLL                 arrays for correct splitting of leads heat fluxes      OJC2F400.61     
CLL                 and snowfall with ice dynamics. J.F.Crossley           OJC2F400.62     
CLL  4.1   Vertical mean vorticity diagnostics introduced. M. J. Bell      OMB3F401.42     
!   Vn4.3   14/05/97    Prevent ANOMICEH initialisation if not             ORH5F403.279    
!                       L_IHANEY. R. Hill                                  ORH5F403.280    
!    4.4  Pass LCAL360 through to ROW_CTL. R.Forbes                        OFR8F404.3      
!   4.4     Pass ZU and ZV from ROW_CTL to TROP_CTL                        OFRAF404.1      
CLL  4.4  15/06/97  Changes to accomodate free surface solution.           ORL1F404.716    
CLL                                                     R.Lenton           ORL1F404.717    
!    4.5   Changes to dynamic ice control logicals                         ODC1F405.369    
!          Chris Sherlock and Doug Cresswell                               ODC1F405.370    
CLLEND -----------------------------------------------------------------   OCN_CTL.22     
C*L Arguments                                                              OCN_CTL.23     
                                                                           OCN_CTL.24     

      SUBROUTINE OCN_CTL(                                                   1,18@DYALLOC.4447   
*CALL ARGSIZE                                                              @DYALLOC.4448   
*CALL ARGD1                                                                @DYALLOC.4449   
*CALL ARGDUMA                                                              @DYALLOC.4450   
*CALL ARGDUMO                                                              @DYALLOC.4451   
*CALL ARGDUMW                                                              GKR1F401.239    
*CALL ARGPTRO                                                              @DYALLOC.4453   
*CALL ARGSTS                                                               @DYALLOC.4454   
*CALL ARGCONO                                                              @DYALLOC.4456   
*CALL ARGOCALL                                                             @DYALLOC.4457   
*CALL ARGPPX                                                               GKR0F305.960    
*CALL ARGOINDX                                                             ORH7F402.73     
     * ICODE,CMESSAGE                                                      @DYALLOC.4458   
                                                                           OCN_CTL.26     
C IN: model description held in dump                                       OCN_CTL.27     
                                                                           OCN_CTL.28     
     &,ITT,TTSEC,SWLDEG,FKMP_GLOBAL                                        ORH6F402.60     
                                                                           OCN_CTL.30     
C INOUT: primary variables not controlled by FORTXD                        OCN_CTL.31     
                                                                           OCN_CTL.32     
     &,P_PASS,PB_PASS,PTD,PTDB                                             ORH1F402.1      
     &,CGRES,CGRESB                                                        ORH1F401.35     
!  P,PB,PTD AND PTDB NOT AVAILABLE IF L_ONOCLIN OR L_OFREESFC = TRUE       ORH1F305.5506   
     &,ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT,UBTBBC,VBTBBC                        ORL1F404.718    
!  ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT,UBTBBC,VBTBBC are not available to       ORL1F404.719    
!                                   this model if L_OFREESFC = false       ORL1F404.720    
     &,MLD                                                                 OCN_CTL.44     
!  MLD is not available to this model if L_OMIXLAY = false                 ORH1F305.5508   
!  MLD is not available to this model if L_OISOPYC = false                 ORH1F305.5509   
     &,HSNOW,CARYHEAT,FLXTOICE,CARYSALT                                    OCN_CTL.51     
     &,ISX,ISY                                                             JT161193.3      
!  HSNOW,CARYHEAT,FLXTOICE,CARYSALT not available if L_SEAICE = false      ORH1F305.5510   
!  ISX,ISY are not available to this model if L_ICEFREEDR = false          ODC1F405.371    
     &,AICE,HICE                                                           OCN_CTL.57     
!  AICE,HICE are not available to this model if L_SEAICE = false           ORH1F305.5512   
     &,UICE,VICE                                                           JT161193.8      
!  UICE,VICE are not available to this model if L_ICEFREEDR = false        ODC1F405.372    
     &,ATHKDFT                                                             OLA2F403.18     
! ATHKDFT is not available to this model if L_OVISBECK=.FALSE.             OLA2F403.19     
                                                                           OCN_CTL.61     
C IN:  ancillary fields not controlled by FORTXD                           OCN_CTL.62     
                                                                           OCN_CTL.63     
     &,SURFP                                                               OCN_CTL.64     
!  SURFP is not available to this model if L_OFREESFC = false              ORH1F305.5514   
     &,HEATFLUX,SOLARFLX                                                   OCN_CTL.68     
!  HEATFLUX,SOLARFLX are not available to this model if L_SEAICE = false   ORH1F305.5515   
     &,SNOWRATE,SUBLIM                                                     OCN_CTL.75     
!  SNOWRATE,SUBLIM are not available to this model if L_SEAICE = false     ORH1F305.5517   
     &,TOPMELT_c,BOTMELT_c                                                 OCN_CTL.79     
!  TOPMELT_c,BOTMELT_c not available to this model if L_SEAICE = false     ORH1F305.5518   
!  or L_OICECOUP = false                                                   ORH1F305.5519   
     &,SOLICE,TAIRDATA                                                     OCN_CTL.86     
!  SOLICE,TAIRDATA are not available to this model if L_SEAICE = false     ORH1F305.5520   
!  or L_SEAICE and L_OICECOUP = true.                                      ORH1F305.5521   
     &,HICE_REF                                                            OCN_CTL.93     
!  HICE_REF is not available if L_SEAICE and L_IHANEY = FALSE              OJC3F400.2      
     &,WSX,WSY                                                             JT161193.12     
     &,fluxcorh,fluxcorw                                                   OJT0F304.10     
                                                                           OCN_CTL.100    
C IN:  Data assimilation                                                   OCN_CTL.102    
                                                                           OCN_CTL.103    
     &,LL_ASS_BTRP,DU_ASS_BTRP,DV_ASS_BTRP                                 OCN_CTL.104    
                                                                           OCN_CTL.105    
                                                                           OCN_CTL.112    
C IN:  pointers to diagnostics                                             OCN_CTL.113    
                                                                           OCN_CTL.114    
     &,SI201_30,SI202_30,SI203_30,SI204_30,SI205_30                        OCN_CTL.115    
     &,SI208_30                                                            OCN_CTL.116    
     &,SI248_30,SI249_30,SI250_30,SI251_30                                 NT071293.264    
     &,SI292_30,SI293_30                                                   OJP0F404.890    
     &,SI201_31,SI202_31                                                   OCN_CTL.117    
     &,SI201_32                                                            OCN_CTL.118    
                                                                           OCN_CTL.119    
C IN:  stashflags for diagnostics                                          OCN_CTL.120    
                                                                           OCN_CTL.121    
     &,SF201_30,SF202_30,SF203_30,SF204_30,SF205_30                        OCN_CTL.122    
     &,SF208_30                                                            OCN_CTL.123    
     &,SF248_30,SF249_30,SF250_30,SF251_30                                 NT071293.265    
     &,SF292_30,SF293_30                                                   OJP0F404.891    
     &,SF201_31,SF202_31                                                   OCN_CTL.124    
     &,SF201_32                                                            OCN_CTL.125    
                                                                           OCN_CTL.126    
C IN:  stash_maxlen for dimensioning stash workspace                       OCN_CTL.127    
                                                                           OCN_CTL.128    
     &,sw_len30,sw_len31,sw_len32                                          OCN_CTL.129    
*CALL ARGOCTOT                                                             ORH1F304.131    
                                                                           OCN_CTL.130    
     &,LCAL360                                                             OFR8F404.4      
     & )                                                                   OCN_CTL.131    
                                                                           OCN_CTL.132    
      IMPLICIT NONE                                                        OCN_CTL.133    
                                                                           OCN_CTL.134    
      INTEGER                                                              OCN_CTL.135    
     &       ICODE        ! Return code : 0 Normal Exit                    OCN_CTL.136    
C                         !             : >0 Error                         OCN_CTL.137    
                                                                           OCN_CTL.138    
      CHARACTER*(80)                                                       ONF0F304.4      
     &       CMESSAGE     ! Error message if return code >0                OCN_CTL.140    
                                                                           OCN_CTL.141    
*CALL OARRYSIZ                                                             ORH6F401.15     
*CALL CSUBMODL                                                             GRB4F305.320    
*CALL CMAXSIZE                                                             @DYALLOC.4459   
*CALL TYPSIZE                                                              @DYALLOC.4460   
*CALL TYPOINDX                                                             PXORDER.28     
*CALL TYPOCALL                                                             @DYALLOC.4461   
*CALL TYPD1                                                                @DYALLOC.4462   
*CALL TYPDUMA                                                              @DYALLOC.4463   
*CALL TYPDUMO                                                              @DYALLOC.4464   
*CALL TYPDUMW                                                              GKR1F401.240    
*CALL TYPPTRO                                                              @DYALLOC.4466   
*CALL TYPSTS                                                               @DYALLOC.4467   
*CALL TYPCONO                                                              @DYALLOC.4469   
*CALL TYPOCTOT                                                             ORH1F304.132    
*CALL CNTLOCN                                                              ORH1F305.5503   
*CALL OTIMER                                                               ORH1F305.5505   
*CALL PPXLOOK                                                              GKR0F305.961    
                                                                           OCN_CTL.143    
      REAL                                                                 OCN_CTL.144    
     & TTSEC,SWLDEG,FKMP_GLOBAL(IMT,JMT_GLOBAL)                            ORH6F402.61     
     &,ZU(IMT,JMT),ZV(IMT,JMT)                                             OFRAF404.2      
     &,P_PASS(IMT_STREAM,JMT_STREAM),PB_PASS(IMT_STREAM,JMT_STREAM)        ORH1F402.2      
     &,P(IMT_STREAM,0:JMT_STREAM+1),PB(IMT_STREAM,0:JMT_STREAM+1)          ORH1F402.3      
     &,PTD(IMT_STREAM,JMT_STREAM),PTDB(IMT_STREAM,JMT_STREAM)              ORH1F305.5524   
     &,ATHKDFT(IMT_VIS,JMT_VIS)                                            OLA2F403.20     
     &,CGRES(IMT_STREAM,JMT_STREAM),CGRESB(IMT_STREAM,JMT_STREAM)          ORH1F401.36     
     &,ETA(IMT_FSF,JMT_FSF),ETAB(IMT_FSF,JMT_FSF)                          ORL1F404.721    
     &,UBT(IMT_FSF,JMTM1_FSF),UBTBBT(IMT_FSF,JMTM1_FSF)                    ORL1F404.722    
     &,VBT(IMT_FSF,JMTM1_FSF),VBTBBT(IMT_FSF,JMTM1_FSF)                    ORL1F404.723    
     &,UBTBBC(IMT_FSF,JMTM1_FSF),VBTBBC(IMT_FSF,JMTM1_FSF)                 ORL1F404.724    
     &,MLD(IMT_IPD_MIX,JMT_IPD_MIX)                                        ORH1F305.5527   
     &,HSNOW(IMT_ICE,JMT_ICE),CARYHEAT(IMT_ICE,JMT_ICE)                    ORH1F305.5528   
     &,FLXTOICE(IMT_ICE,JMT_ICE)                                           ORH1F305.5529   
     &,ISX(IMT_idr,JMTM1_idr),ISY(IMT_idr,JMTM1_idr)                       ODC1F405.373    
     &,UICE(IMT_idr,JMTM1_idr),VICE(IMT_idr,JMTM1_idr)                     ODC1F405.374    
     &,CARYSALT(IMT_ICE,JMT_ICE)                                           ORH1F305.5532   
     &,AICE(IMT_ICE,JMT_ICE),HICE(IMT_ICE,JMT_ICE)                         ORH1F305.5533   
     &,HICE_REF(IMT_IHY,JMT_IHY)                                           ORH1F305.5534   
     &,WSX(IMT_idr,JMTM1_idr),WSY(IMT_idr,JMTM1_idr)                       ODC1F405.375    
     &,SURFP(IMT_CLN_FSF,JMT_CLN_FSF)                                      ORH1F305.5536   
     &,TOPMELT_c(IMT_ICE_ICP,JMT_ICE_ICP)                                  ORH1F305.5537   
     &,BOTMELT_c(IMT_ICE_ICP,JMT_ICE_ICP)                                  ORH1F305.5538   
     &,HEATFLUX(IMT_ICE,JMT_ICE)                                           OJC2F400.63     
     &,SOLARFLX(IMT_ICE,JMT_ICE)                                           OJC2F400.64     
     &,SNOWRATE(IMT_ICE,JMT_ICE),SUBLIM(IMT_ICE,JMT_ICE)                   ORH1F305.5541   
     &,SOLICE(IMT_ICE_NOICP,JMT_ICE_NOICP)                                 ORH1F305.5542   
     &,TAIRDATA(IMT_ICE_NOICP,JMT_ICE_NOICP)                               ORH1F305.5543   
     &,fluxcorh(IMT_FLX,JMT_flx),fluxcorw(IMT_FLX,JMT_flx)                 ORH1F305.5544   
     &,DU_ASS_BTRP(IMT_ASM,JMT_ASM),DV_ASS_BTRP(IMT_ASM,JMT_ASM)           ORH1F305.5545   
                                                                           OCN_CTL.165    
      INTEGER                                                              OCN_CTL.166    
     & ITT                                                                 OCN_CTL.167    
     &,SI201_30,SI202_30,SI203_30,SI204_30,SI205_30                        OCN_CTL.178    
     &,SI208_30                                                            OCN_CTL.179    
     &,SI248_30,SI249_30,SI250_30,SI251_30                                 NT071293.266    
     &,SI292_30,SI293_30                                                   OJP0F404.892    
     &,SI201_31,SI202_31                                                   OCN_CTL.180    
     &,SI201_32                                                            OCN_CTL.181    
     &,sw_len30,sw_len31,sw_len32                                          OCN_CTL.182    
                                                                           OCN_CTL.183    
      LOGICAL                                                              OCN_CTL.185    
     & LL_ASS_BTRP                                                         OCN_CTL.186    
     &,LCAL360                                                             OFR8F404.5      
      LOGICAL                                                              OCN_CTL.188    
     & SF201_30,SF202_30,SF203_30,SF204_30,SF205_30                        @DYALLOC.4470   
     &,SF208_30                                                            OCN_CTL.191    
     &,SF248_30,SF249_30,SF250_30,SF251_30                                 NT071293.267    
     &,SF292_30,SF293_30                                                   OJP0F404.893    
     &,SF201_31,SF202_31                                                   OCN_CTL.192    
     &,SF201_32                                                            OCN_CTL.193    
                                                                           OCN_CTL.194    
CL Locally allocated arrays for interfacing between sections 30,31,32      OCN_CTL.195    
                                                                           OCN_CTL.196    
      REAL                                                                 ORH1F305.5546   
     & ZTD(IMT_STREAM,JMT_STREAM) ! vorticity ROWS to RELAX                ORH1F305.5547   
     &,XF(IMT_FSF,JMT_FSF)      ! ROWS to TROPIC                           ORH1F305.5548   
     &,YF(IMT_FSF,JMT_FSF)      ! ROWS to TROPIC                           ORH1F305.5549   
     &,SURFTEMP(IMT_ICE,JMT_ICE)! ROWS to ICE                              ORH1F305.5550   
     &,SURFSAL(IMT_ICE,JMT_ICE) ! ROWS to ICE                              ORH1F305.5551   
     &,anomiceh(IMT_IHY,JMT_IHY)! Anomalous seaice heat flux (Haney)       ORH1F305.5552   
                                                                           ORH1F305.5553   
      LOGICAL                                                              ORH1F305.5554   
     & ICY(IMT_ICE,JMT_ICE)       ! ROWS and ICE                           ORH1F305.5555   
     &,NEWICE(IMT_ICE,JMT_ICE)    ! ROWS to ICE                            ORH1F305.5556   
                                                                           ORH1F305.5557   
      REAL                                                                 ORH1F305.5558   
     &  UCURRENT(IMT_drsa,JMTM1_drsa) ! ROWS to ICE                        ODC1F405.376    
     &, VCURRENT(IMT_drsa,JMTM1_drsa) ! ROWS to ICE                        ODC1F405.377    
     &,WSX_ICE(IMT_idr,JMTM1_idr)  ! ROWS to ICE                           ODC1F405.378    
     &,WSY_ICE(IMT_idr,JMTM1_idr)  ! ROWS to ICE                           ODC1F405.379    
     &,WSX_LEADS(IMT_idr,JMTM1_idr)! ROWS to ICE                           ODC1F405.380    
     &,WSY_LEADS(IMT_idr,JMTM1_idr)! ROWS to ICE                           ODC1F405.381    
      REAL                                                                 OJC2F400.65     
     & OCEANHEATFLUX(IMT,JMT) ! HEATFLUX fract for ocn budget              OOM1F405.334    
     &,OCEANSNOWRATE(IMT,JMT) ! SNOWRATE for initial open sea              OOM1F405.335    
     &,ICEHEATFLUX(IMT_ICE,JMT_ICE)   ! HEATFLUX fract for ice budget      OJC2F400.68     
     &,ICESNOWRATE(IMT_ICE,JMT_ICE)   ! SNOWRATE at initial seaice pts     OJC2F400.69     
     &,SWZVRT(IMT_ZVRT,JMT_ZVRT,N_ZVRT)! vorticity diagnostics             OMB3F401.43     
                                                                           ORH1F305.5566   
C Loop counting indexes.                                                   ORH1F305.5567   
      INTEGER I,J                                                          ORH1F305.5568   
C External subroutines called                                              OCN_CTL.227    
                                                                           OCN_CTL.228    
      EXTERNAL                                                             OCN_CTL.229    
     &       ROW_CTL                                                       OCN_CTL.230    
     &,      TROP_CTL                                                      OCN_CTL.232    
     &,      ICE_CTL                                                       OCN_CTL.235    
     &,      TIMER                                                         OCN_CTL.238    
                                                                           OCN_CTL.240    
                                                                           OCN_CTL.241    
                                                                           OCN_CTL.242    
      ICODE=0                                                              OCN_CTL.243    
      CMESSAGE='  '                                                        OCN_CTL.244    
      ! Stream function variables are not relevant                         ORH0F405.13     
      ! when the free surface is used.                                     ORH0F405.14     
      IF (.NOT.(L_ONOCLIN.OR.L_OFREESFC)) THEN                             ORH0F405.15     
         ! We must now copy P_PASS to P and PB_PASS to PB                  ORH1F402.5      
         ! This has to be done in this manner because                      ORH1F402.6      
         ! P_PASS and PB_PASS point directly into the D1 array.            ORH1F402.7      
         ! For these two fields, we need halo regions 2 rows               ORH1F402.8      
         ! wide - whereas all other fields only require 1 row.             ORH1F402.9      
         ! Hence an attempt to call SWAPBOUNDS for 2 halo rows             ORH1F402.10     
         ! would result corruption of other arrays in D1.                  ORH1F402.11     
         DO J=1,JMT_STREAM                                                 ORH1F402.12     
            DO I=1,IMT                                                     ORH1F402.13     
               P(I,J)=P_PASS(I,J)                                          ORH1F402.14     
               PB(I,J)=PB_PASS(I,J)                                        ORH1F402.15     
            ENDDO                                                          ORH1F402.16     
         ENDDO                                                             ORH1F402.17     
      ENDIF                                                                ORH1F402.18     
                                                                           OCN_CTL.245    
      IF (L_SEAICE) THEN                                                   ORH1F305.5569   
C ------------------------------------------------------------------       OJC2F400.70     
C  Call subroutine to initialise sea ice variables and arrays used         OJC2F400.71     
C  in ocean-ice coupling.                                                  OJC2F400.72     
C                                                                          OJC2F400.73     
      IF (l_otimer) call TIMER('INITOICE',3)                               OJC2F400.74     
                                                                           OJC2F400.75     
   ! Anomiceh does not get set in TRACER for 1st and last                  ORH6F402.22     
   ! rows - make sure it's initialised. This needs further consideration   ORH6F402.23     
   ! for LAM configurations!                                               ORH6F402.24     
         IF (L_IHANEY) THEN                                                ORH5F403.281    
            DO J = J_1,J_JMT                                               ORH5F403.282    
               DO I = 1, IMT                                               ORH5F403.283    
                  ANOMICEH(I,J) = 0.0                                      ORH5F403.284    
               ENDDO                                                       ORH5F403.285    
            ENDDO                                                          ORH5F403.286    
         ENDIF                                                             ORH5F403.287    
      CALL Init_Ocean_Ice (                                                ORH7F402.75     
*CALL ARGOINDX                                                             ORH7F402.76     
     & imt,itt,jmt,jmtm1                                                   ORH7F402.77     
     &,amx,fkmp,heatflux,snowrate                                          OJC2F400.77     
     &,wsx,wsy                                                             OJC2F400.78     
     &,icy,iceheatflux,oceanheatflux,icesnowrate,oceansnowrate             OJC2F400.79     
     &,wsx_ice,wsx_leads,wsy_ice,wsy_leads                                 OJC2F400.80     
     &,aice,newice )                                                       OJC2F400.81     
                                                                           OJC2F400.82     
      IF (l_otimer) call TIMER('INITOICE',4)                               OJC2F400.83     
      ENDIF  ! L_SEAICE                                                    ORH1F305.5584   
CL ********************************************************                OCN_CTL.257    
CL Temporary section for miscellaneous code held in COX step               OCN_CTL.258    
C  updates timestep counter                                                OCN_CTL.259    
C  updates permuting disc I/O                                              OCN_CTL.260    
C  adjusts quantities for mixing timestep                                  OCN_CTL.261    
                                                                           OCN_CTL.262    
                                                                           OCN_CTL.263    
          CALL OCN_FRST(                                                   OCN_CTL.264    
*CALL ARGSIZE                                                              @DYALLOC.4471   
*CALL ARGOCALL                                                             @DYALLOC.4472   
*CALL ARGOINDX                                                             ORH7F402.78     
     & ITT,TTSEC,SWLDEG                                                    ORH6F402.62     
     &,P(1,1),PB(1,1),PTD,PTDB                                             ORH1F402.37     
     &,ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT                                      ORL1F404.725    
     & )                                                                   OCN_CTL.269    
                                                                           OCN_CTL.270    
*IF DEF,MPP                                                                ORH2F403.164    
      ! Stream function variables are not relevant                         ORH0F405.16     
      ! when the free surface is used.                                     ORH0F405.17     
      IF (.NOT.(L_ONOCLIN.OR.L_OFREESFC)) THEN                             ORH0F405.18     
         ! Ensure halo regions are populated - 2 rows either side          ORH2F403.166    
         ! of the main data.                                               ORH2F403.167    
         ! This is done in two stages in order to allow for                ORH2F403.168    
         ! decompositions where each PE only has 1 row allocated to        ORH2F403.169    
         ! it - in such instances, trying to swap both halo                ORH2F403.170    
         ! rows in one step will cause indeterminate results.              ORH2F403.171    
                                                                           ORH2F403.172    
         ! First we do the inner halo rows:                                ORH2F403.173    
         CALL SWAPBOUNDS(P(1,1),IMT_STREAM,JMT_STREAM,0,1,1)               ORH2F403.174    
         CALL SWAPBOUNDS(PB(1,1),IMT_STREAM,JMT_STREAM,0,1,1)              ORH2F403.175    
                                                                           ORH2F403.176    
         ! Now we do the outer halo rows:                                  ORH2F403.177    
         CALL SWAPBOUNDS(P(1,0),IMT_STREAM,(JMT_STREAM+2),0,2,1)           ORH2F403.178    
         CALL SWAPBOUNDS(PB(1,0),IMT_STREAM,(JMT_STREAM+2),0,2,1)          ORH2F403.179    
      ENDIF                                                                ORH2F403.180    
*ENDIF                                                                     ORH2F403.181    
                                                                           ORH2F403.182    
                                                                           ORH2F403.183    
                                                                           ORH2F403.184    
CL ********************************************************                OCN_CTL.271    
CL Section 30: Row calculations                                            OCN_CTL.272    
                                                                           OCN_CTL.273    
      IF (L_OTIMER) CALL TIMER('ROW_CTL',3)                                ORH1F305.5585   
                                                                           OCN_CTL.277    
      CALL ROW_CTL(                                                        @DYALLOC.4473   
*CALL ARGSIZE                                                              @DYALLOC.4474   
*CALL ARGD1                                                                @DYALLOC.4475   
*CALL ARGDUMA                                                              @DYALLOC.4476   
*CALL ARGDUMO                                                              @DYALLOC.4477   
*CALL ARGDUMW                                                              GKR1F401.241    
*CALL ARGPTRO                                                              @DYALLOC.4479   
*CALL ARGSTS                                                               @DYALLOC.4480   
*CALL ARGCONO                                                              @DYALLOC.4482   
*CALL ARGOCALL                                                             @DYALLOC.4483   
*CALL ARGPPX                                                               GKR0F305.963    
*CALL ARGOINDX                                                             ORH7F402.80     
     &             ICODE,CMESSAGE ! ################################       @DYALLOC.4484   
                                                                           OCN_CTL.279    
C IN: model description held in dump                                       OCN_CTL.280    
                                                                           OCN_CTL.281    
     &,ITT,TTSEC,SWLDEG,FKMP_GLOBAL                                        ORH6F402.63     
                                                                           OCN_CTL.283    
C INOUT: primary variables not controlled by FORTXD                        OCN_CTL.284    
                                                                           OCN_CTL.285    
     &,ZU,ZV                                                               OFRAF404.3      
     &,P,PB,PTD,PTDB                                                       ORH1F305.5586   
     &,UBT,VBT,UBTBBC,VBTBBC                                               ORL1F404.726    
     &,MLD                                                                 ORH1F305.5588   
     &,AICE,HICE,HSNOW                                                     ORH1F305.5589   
     &,HICE_REF                                                            ORH1F305.5590   
     &,CARYHEAT,FLXTOICE,CARYSALT                                          ORH1F305.5591   
     &,ISX,ISY,WSX_LEADS,WSY_LEADS,ATHKDFT                                 OLA2F403.21     
     &,ICY                                                                 ORH1F305.5593   
     &,OCEANHEATFLUX,OCEANSNOWRATE                                         OJC2F400.84     
     &,anomiceh                                                            ORH1F305.5594   
     &,fluxcorh,fluxcorw                                                   ORH1F305.5595   
     &,LL_ASS_BTRP,DU_ASS_BTRP,DV_ASS_BTRP                                 ORH1F305.5596   
     &,SURFTEMP,SURFSAL,NEWICE                                             ORH1F305.5597   
     &,UCURRENT,VCURRENT                                                   ORH1F305.5598   
     &,ZTD                                                                 ORH1F305.5599   
     &,XF,YF                                                               ORH1F305.5600   
                                                                           OMB3F401.44     
C OUT: arrays for interfacing between sections                             OMB3F401.45     
     &,SWZVRT                                                              OMB3F401.46     
                                                                           OCN_CTL.335    
C IN:  pointers and stashflags to diagnostics                              OCN_CTL.342    
                                                                           OCN_CTL.343    
     &,SI201_30,SI202_30,SI203_30,SI204_30,SI205_30                        OCN_CTL.344    
     &,SI208_30                                                            OCN_CTL.345    
     &,SI248_30,SI249_30,SI250_30,SI251_30                                 NT071293.268    
     &,SI292_30,SI293_30                                                   OJP0F404.894    
     &,SF201_30,SF202_30,SF203_30,SF204_30,SF205_30                        OCN_CTL.346    
     &,SF208_30                                                            OCN_CTL.347    
     &,SF248_30,SF249_30,SF250_30,SF251_30                                 NT071293.269    
     &,SF292_30,SF293_30                                                   OJP0F404.895    
                                                                           OJP0F404.896    
                                                                           OCN_CTL.348    
C IN:  STASH_MAXLEN for dynamical allocation of STASH workspace            OCN_CTL.349    
                                                                           OCN_CTL.350    
     &,sw_len30                                                            OCN_CTL.351    
*CALL ARGOCTOT                                                             ORH1F304.133    
                                                                           OCN_CTL.352    
     &,LCAL360                                                             OFR8F404.6      
     & )                                                                   OCN_CTL.353    
                                                                           OCN_CTL.354    
      IF (L_OTIMER) CALL TIMER('ROW_CTL',4)                                ORH1F305.5601   
                                                                           OCN_CTL.358    
      IF(ICODE.GT.0) THEN                                                  OCN_CTL.359    
       RETURN                                                              OCN_CTL.360    
      ENDIF                                                                OCN_CTL.361    
                                                                           OCN_CTL.362    
!  Section 31: Option Y chosen.  No barotropic solution if L_ONOCLIN = t   ORH1F305.5602   
!  Section 31: Barotropic solution if L_ONOCLIN = f                        ORH1F305.5603   
                                                                           ORH1F305.5604   
      IF (.NOT.(L_ONOCLIN))THEN                                            ORH1F305.5605   
         IF (L_OTIMER) CALL TIMER('TROP_CTL',3)                            ORH1F305.5606   
                                                                           OCN_CTL.374    
      CALL TROP_CTL(                                                       @DYALLOC.4485   
*CALL ARGSIZE                                                              @DYALLOC.4486   
*CALL ARGD1                                                                @DYALLOC.4487   
*CALL ARGDUMA                                                              @DYALLOC.4488   
*CALL ARGDUMO                                                              @DYALLOC.4489   
*CALL ARGDUMW                                                              GKR1F401.242    
*CALL ARGSTS                                                               @DYALLOC.4492   
*CALL ARGOCALL                                                             @DYALLOC.4495   
*CALL ARGPPX                                                               GKR0F305.964    
*CALL ARGOINDX                                                             ORH7F402.79     
     &              ICODE,CMESSAGE                                         @DYALLOC.4496   
                                                                           OCN_CTL.376    
C IN: model description held in dump                                       OCN_CTL.377    
                                                                           OCN_CTL.378    
     &, ITT                                                                ORH3F405.78     
                                                                           OCN_CTL.380    
C INOUT: primary variables                                                 OCN_CTL.381    
                                                                           OCN_CTL.382    
     &,P,PB,PTD,PTDB                                                       ORH1F305.5607   
     &,CGRES,CGRESB                                                        ORH1F401.37     
C IN: arrays for rigid lid pressure calculation                            OFRAF404.4      
     &,ZU,ZV                                                               OFRAF404.5      
     &,ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT,UBTBBC,VBTBBC                        ORL1F404.727    
C IN: arrays for interfacing between sections 30,31                        ORH1F305.5611   
     &,ZTD                                                                 ORH1F305.5612   
     &,XF,YF                                                               ORH1F305.5613   
     &,SWZVRT                                                              OMB3F401.47     
                                                                           OCN_CTL.410    
C IN:  pointers and stashflags to diagnostics                              OCN_CTL.411    
                                                                           OCN_CTL.412    
     &,SI201_31,SI202_31                                                   OCN_CTL.413    
     &,SF201_31,SF202_31                                                   OCN_CTL.414    
                                                                           OCN_CTL.415    
C IN:  STASH_MAXLEN for dynamical allocation of STASH workspace            OCN_CTL.416    
                                                                           OCN_CTL.417    
     &,sw_len31                                                            OCN_CTL.418    
                                                                           OCN_CTL.419    
     & )                                                                   OCN_CTL.420    
                                                                           OCN_CTL.421    
         IF (L_OTIMER) CALL TIMER('TROP_CTL',4)                            ORH1F305.5614   
                                                                           OCN_CTL.427    
      IF(ICODE.GT.0) THEN                                                  OCN_CTL.428    
       RETURN                                                              OCN_CTL.429    
      ENDIF                                                                OCN_CTL.430    
                                                                           OCN_CTL.431    
      ENDIF  ! L_ONOCLIN = false                                           ORH1F305.5615   
                                                                           ORH1F305.5616   
      IF (L_SEAICE) THEN                                                   ORH1F305.5617   
         IF (L_OTIMER) CALL TIMER('ICE_CTL',3)                             ORH1F305.5618   
                                                                           OCN_CTL.441    
      CALL ICE_CTL(                                                        @DYALLOC.4497   
*CALL ARGSIZE                                                              @DYALLOC.4498   
*CALL ARGD1                                                                @DYALLOC.4499   
*CALL ARGDUMA                                                              JT161193.59     
*CALL ARGDUMO                                                              @DYALLOC.4500   
*CALL ARGDUMW                                                              GKR1F401.243    
*CALL ARGSTS                                                               @DYALLOC.4501   
*CALL ARGOCALL                                                             @DYALLOC.4504   
*CALL ARGPPX                                                               GKR0F305.962    
*CALL ARGOINDX                                                             ORH7F402.81     
     &          ICODE,CMESSAGE                                             @DYALLOC.4505   
                                                                           OCN_CTL.443    
C INOUT: primary variables                                                 OCN_CTL.444    
                                                                           OCN_CTL.445    
     &,HSNOW,AICE,HICE                                                     OCN_CTL.446    
     &,UICE,VICE                                                           JT161193.63     
                                                                           OCN_CTL.447    
C INOUT: variables required by ocean next timestep                         OCN_CTL.448    
                                                                           OCN_CTL.449    
     &,CARYSALT,CARYHEAT,FLXTOICE                                          OCN_CTL.450    
     &,ISX,ISY                                                             JT161193.66     
                                                                           OCN_CTL.451    
C IN:  ancillary fields                                                    OCN_CTL.452    
                                                                           OCN_CTL.453    
     &,HEATFLUX,SOLARFLX                                                   OCN_CTL.456    
     &,SNOWRATE,SUBLIM                                                     OCN_CTL.459    
     &,TOPMELT_c,BOTMELT_c                                                 OCN_CTL.462    
     &,SOLICE,TAIRDATA                                                     OCN_CTL.465    
     &,anomiceh                                                            OCN_CTL.468    
     &,WSX_ICE,WSY_ICE                                                     JT161193.69     
                                                                           OCN_CTL.474    
C IN: arrays for interfacing between sections 30,32                        OCN_CTL.475    
                                                                           OCN_CTL.476    
     &,SURFTEMP,SURFSAL,NEWICE,ICY                                         OCN_CTL.477    
     &,ICEHEATFLUX,ICESNOWRATE                                             OJC2F400.85     
     &,UCURRENT,VCURRENT                                                   JT161193.72     
                                                                           OCN_CTL.479    
C IN:  pointers and stashflags to diagnostics                              OCN_CTL.480    
                                                                           OCN_CTL.481    
     &,SI201_32                                                            OCN_CTL.482    
     &,SF201_32                                                            OCN_CTL.483    
                                                                           OCN_CTL.484    
C IN:  STASH_MAXLEN for dynamical allocation of STASH workspace            OCN_CTL.485    
                                                                           OCN_CTL.486    
     &,sw_len32                                                            OCN_CTL.487    
                                                                           OCN_CTL.488    
     & )                                                                   OCN_CTL.489    
                                                                           OCN_CTL.490    
         IF (L_OTIMER) CALL TIMER('ICE_CTL',4)                             ORH1F305.5619   
      ENDIF   ! L_SEAICE = true                                            ORH1F305.5620   
CL Section for printing out diagnostic variables                           OCN_CTL.498    
                                                                           OCN_CTL.499    
                                                                           OCN_CTL.500    
      IF (.NOT.L_OFREESFC) THEN                                            ORL1F404.728    
      CALL DIAG_PRT(                                                       OCN_CTL.501    
*CALL ARGSIZE                                                              @DYALLOC.4506   
*CALL ARGD1                                                                @DYALLOC.4507   
*CALL ARGDUMO                                                              @DYALLOC.4508   
*CALL ARGPTRO                                                              @DYALLOC.4509   
*CALL ARGOCALL                                                             @DYALLOC.4510   
*CALL ARGOINDX                                                             ORH7F402.82     
     & ITT                                                                 OCN_CTL.502    
     &,P(1,1),PB(1,1),PTD,PTDB                                             OSI0F402.180    
     & )                                                                   OCN_CTL.506    
      ENDIF                                                                ORL1F404.729    
                                                                           OCN_CTL.507    
      ! Stream function variables are not relevant                         ORH0F405.19     
      ! when the free surface is used.                                     ORH0F405.20     
      IF (.NOT.(L_ONOCLIN.OR.L_OFREESFC)) THEN                             ORH0F405.21     
         ! We must now copy P and PB back to P_PASS and PB_PASS.           ORH1F402.39     
         DO J=1,JMT_STREAM                                                 ORH1F402.40     
            DO I=1,IMT                                                     ORH1F402.41     
               P_PASS(I,J)=P(I,J)                                          ORH1F402.42     
               PB_PASS(I,J)=PB(I,J)                                        ORH1F402.43     
            ENDDO                                                          ORH1F402.44     
         ENDDO                                                             ORH1F402.45     
      ENDIF                                                                ORH1F402.46     
                                                                           OCN_CTL.513    
      RETURN                                                               OCN_CTL.514    
      END                                                                  OCN_CTL.515    
*ENDIF                                                                     @DYALLOC.4511