*IF DEF,SEAICE                                                             ICEFLOE.2      
C ******************************COPYRIGHT******************************    GTS2F400.4321   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.4322   
C                                                                          GTS2F400.4323   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.4324   
C restrictions as set forth in the contract.                               GTS2F400.4325   
C                                                                          GTS2F400.4326   
C                Meteorological Office                                     GTS2F400.4327   
C                London Road                                               GTS2F400.4328   
C                BRACKNELL                                                 GTS2F400.4329   
C                Berkshire UK                                              GTS2F400.4330   
C                RG12 2SZ                                                  GTS2F400.4331   
C                                                                          GTS2F400.4332   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.4333   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.4334   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.4335   
C Modelling at the above address.                                          GTS2F400.4336   
C ******************************COPYRIGHT******************************    GTS2F400.4337   
C                                                                          GTS2F400.4338   
C*LL                                                                       ICEFLOE.3      
CLL   SUBROUTINE ICEFLOE                                                   ICEFLOE.4      
CLL   ------------------                                                   ICEFLOE.5      
CLL                                                                        ICEFLOE.6      
CLL   THERMODYNAMIC SEA-ICE MODEL, BASED ON THE ZERO-LAYER MODEL OF        ICEFLOE.7      
CLL   SEMTNER, A.J. (1976) : J.PHYS.OCEANOGR., 6, 379-389,                 ICEFLOE.8      
CLL   MODIFIED ALONG THE LINES SUGGESTED BY                                ICEFLOE.9      
CLL   GORDON, C., AND BOTTOMLEY, M. (1984) : DCTN 1.                       ICEFLOE.10     
CLL   INCLUDES A REPRESENTATION OF LEADS (WITHOUT DYNAMICS) DUE TO         ICEFLOE.11     
CLL   HIBLER, W.D. (1979) : J.PHYS.OCEANOGR., 9, 815-846.                  ICEFLOE.12     
CLL                                                                        ICEFLOE.13     
CLL   THIS ROUTINE FORMS PART OF SYSTEM COMPONENT P4.                      ICEFLOE.14     
CLL   IT CAN BE COMPILED BY CFT77, BUT DOES NOT CONFORM TO ANSI            ICEFLOE.15     
CLL   FORTRAN77 STANDARDS, BECAUSE OF THE INLINE COMMENTS.                 ICEFLOE.16     
CLL   IT ADHERES TO THE STANDARDS OF DOCUMENTATION PAPER 4, VERSION 1.     ICEFLOE.17     
CLL                                                                        ICEFLOE.18     
CLL   ALL QUANTITIES IN THIS ROUTINE ARE IN S.I. UNITS UNLESS              ICEFLOE.19     
CLL   OTHERWISE STATED.                                                    ICEFLOE.20     
CLL                                                                        ICEFLOE.21     
CLL   WRITTEN BY D.L.ROBERTS (3/10/90)                                     ICEFLOE.22     
CLL    VERSION NUMBER 1.4                                                  ICEFLOE.23     
CLL   REVIEWED BY J.F.THOMPSON (11/12/90)                                  ICEFLOE.24     
CLL   REVISED BY: J.F.THOMSON (8/2/91)                                     ICEFLOE.25     
CLL               STORES HEAT FLUXES FOR OCEAN IN TWO TIME LEVELS          ICEFLOE.26     
CLL               AND PASSES LATENT HEAT TO RAISE OCEAN TEMPERATURES       ICEFLOE.27     
CLL               TO FREEZING AS HEAT NOT HEAT FLUX.                       ICEFLOE.28     
CLL               THIS SATISFIES ENERGY CONSERVATION.                      ICEFLOE.29     
CLL   REVIEWED BY: N.K.TAYLOR (18/6/92)                                    ICEFLOE.30     
CLL   REVISED BY: J.F.THOMSON (30/06/92)                                   ICEFLOE.31     
CLL               RETURN TO PREVIOUS VERSION OF MODEL WITH ONLY            ICEFLOE.32     
CLL               ONE TIME LEVEL OF OCEANFLX AND CARYHEAT STORED           ICEFLOE.33     
CLL               AS A FLUX TO AVOID DIVERGENCE OF SOLUTIONS IN            ICEFLOE.34     
CLL               TRACER AND ABNORMALLY THICK ANTARCTIC ICE.               ICEFLOE.35     
CLL   REVISED BY: J.F.THOMSON (29/10/92)                                   ICEFLOE.36     
CLL               SOLARFLX ALLOWED TO PENETRATE LEADS IN OCEAN HENCE       ICEFLOE.37     
CLL               NOT INCLUDED IN ICE MODEL CALCULATIONS.                  ICEFLOE.38     
CLL    REVISED BY: C.COOPER (27/01/93)                                     ICEFLOE.39     
CLL                USES THE ARRAYS SET UP IN SET_CONSTANTS_OCEAN FOR       ICEFLOE.40     
CLL                ICE-OCEAN HEAT FLUX AND MAXIMUM ICE CONCENTRATION.      ICEFLOE.41     
CLL   REVISED BY: J.F.THOMSON (03/02/93)                                   ICEFLOE.42     
CLL               VALUE OF EPSILON, MINIMUM MEAN ICE DEPTH, INCREASED      ICEFLOE.43     
CLL               TO 1.0E-4 FROM 1.0E-6 AFTER COUPLED MODEL FAILURE.       ICEFLOE.44     
CLL   REVISED BY: J.F.THOMSON (31/12/93)                                   JT161193.389    
CLL               ADDED SECTION 32 DIAGNOSTICS AND ARRAYS TO INTERFACE     JT161193.390    
CLL               WITH THE SEA ICE DYNAMICS.                               JT161193.391    
CLL   REVISED BY: J.F.THOMSON (05/11/93)                                   JT051193.8      
CLL               NEW *IF DEF ONOPOLO ADDED TO ALLOW OCEAN WITHOUT SEA     JT051193.9      
CLL               ICE ON ROW JMT.                                          JT051193.10     
CLL   3.4   04/08/94 Remove ice flux correction and split sea ice          OJT0F304.21     
CLL                  haney forcing from SST/SSS haney forcing. (JFT)       OJT0F304.22     
!     3.5    16.01.95   Remove *IF dependency. R.Hill                      ORH1F305.5785   
CLL   REVISED BY: C.COOPER (25/03/95)                                      OCC0F400.66     
CLL               RENAME EPSILON AS HICEMIN.  PASS THIS AND RHOWATER       OCC0F400.67     
CLL               VIA SUBROUTINE CALL RATHER THAN SETTING LOCALLY          OCC0F400.68     
CLL   4.0   16/03/95 Put sections which check upper and lower bounds       OCS0F400.1      
CLL                  of ice concentration, lower bound for ice depth,      OCS0F400.2      
CLL                  and those which update ice and snow prognostics,      OCS0F400.3      
CLL                  and CARYHEAT and CARYSALT into separate               OCS0F400.4      
CLL                  subroutines which can also be accessed by             OCS0F400.5      
CLL                  the ice assimilation.                                 OCS0F400.6      
CLL                  Miscellaneous tidying.                                OCS0F400.7      
CLL   4.0   Remove redundant arrays delh_dyn and delhsa_dyn and give       OJC3F400.27     
CLL         diagnostic arrays meaningful names. J.F.Crossley               OJC3F400.28     
CLL   4.0    Convert carysalt to a rate. J.F.Crossley                      OJC0F400.1      
CLL   4.0   Adjustments to snowrate and heatflux to account for sea        OJC2F400.52     
CLL         ice dynamics.  **** NOTE THAT THE CODE ASSUMES THAT NO         OJC2F400.53     
CLL         ICY POINTS IN TRACER HAVE BEEN CHANGED TO NON-ICY BY THE       OJC2F400.54     
CLL         TIME OLDICE WAS COMPUTED WHICH IS NOT THE CASE WITH SEA        OJC2F400.55     
CLL         ICE DYNAMICS - CARE NEEDED **** J.F.Crossley/J.Gregory         OJC2F400.56     
CLL   4.3   delhs_therm becomes a grid-box-mean quantity  J.M.Gregory      OJG3F403.1      
CLL   4.5  J M Gregory  Rate diagnostics corresponding to increments       OJG1F405.8      
CLL   4.5   New treatment of ocean-to-ice flux for HADCM4                  ODC1F405.437    
CLL         Doug Cresswell and Jonathan Gregory                            ODC1F405.438    
CLL                                                                        ICEFLOE.45     
CLLEND---------------------------------------------------------------      ICEFLOE.46     
C*L                                                                        ICEFLOE.47     

      SUBROUTINE ICEFLOE(                                                   1,9ORH7F402.239    
*CALL ARGOINDX                                                             ORH7F402.240    
     & ICY,NEWICE,                                                         ORH7F402.241    
     + HEATFLUX,SOLARFLX,                                                  ICEFLOE.49     
     + HICE,HSNOW,                                                         ICEFLOE.50     
     + SNOWRATE,SUBLIMZ,AICE,OCEANFLX,CARYHEAT,CARYSALT,TOPMELTZ,          ICEFLOE.51     
     + BOTMELTZ,SURFSAL,SURFTEMP,                                          ICEFLOE.52     
     + anomiceh,                                                           ICEFLOE.55     
     + FKMP,                                                               ICEFLOE.61     
     + dela_therm,delhi_therm,delhs_therm,                                 OJC3F400.29     
     & ddt_aice_therm,ddt_hice_therm,ddt_snow_therm,                       OJG1F405.9      
     + sf_dela_therm,sf_delhi_therm,sf_delhs_therm,                        OJC3F400.30     
     & sf_ddt_aice_therm,sf_ddt_hice_therm,sf_ddt_snow_therm,              OJG1F405.10     
     + H0,AMX,AICEMIN,HICEMIN,RHOICE,RHOSNOW,RHOWATER,                     OCC0F400.69     
     & IMT,IMTM1,JMT,DT,DZ1Z                                               ORH3F405.99     
     +,RHOCP,TFREEZE,EDDYDIFF,SALICE,QFUSION                               JT161193.398    
     +,AICEMIZFRY  !IN Concentration below which O2I is fix wrt aice.      ODC1F405.439    
     + ,salref)                                                            OJL1F405.74     
C                                                                          ICEFLOE.64     
      IMPLICIT NONE                                                        ICEFLOE.65     
C                                                                          ICEFLOE.66     
*CALL CNTLOCN                                                              ORH1F305.5786   
*CALL OARRYSIZ                                                             ORH1F305.5787   
*CALL TYPOINDX                                                             ORH7F402.242    
      INTEGER IMT, ! IN NUMBER OF POINTS IN A ROW.                         ICEFLOE.67     
     & IMTM1,      ! IN IMT MINUS 1.                                       ORH6F402.118    
     + JMT         ! IN NUMBER OF POINTS IN A COLUMN.                      ICEFLOE.68     
C                                                                          ICEFLOE.69     
       real salref                                                         OJL1F405.75     
      REAL                                                                 ICEFLOE.70     
     + HEATFLUX(IMT,JMT), ! IN NET NON-PENETRATIVE HEAT FLUX               ICEFLOE.71     
     +                    !  OVER LEADS (PORTION FOR ICE BUDGET)           OJC2F400.57     
     + SOLARFLX(IMT,JMT), ! IN NET PENETRATIVE HEAT FLUX OVER LEADS.       ICEFLOE.73     
     + SNOWRATE(IMT,JMT), ! IN RATE OF SNOWFALL, IN KG M-2 S-1.            ICEFLOE.74     
     +                    !  (AT INITIALLY ICY POINTS ONLY)                OJC2F400.58     
     + SUBLIMZ(IMT,JMT),  ! IN RATE OF SUBLIMATION, IN KG M-2 S-1.         ICEFLOE.75     
     + TOPMELTZ(IMT,JMT), ! IN RATE OF MELTING OF SNOW IN W M-2.           ICEFLOE.76     
     +                    !    (THIS CAN BE TRANSFERRED TO ICE.)           ICEFLOE.77     
     + BOTMELTZ(IMT,JMT), ! IN DIFFUSIVE HEAT FLUX THROUGH ICE. IF         ICEFLOE.78     
     +                    !    THIS IS +VE, ICE MELTS AT THE BASE.         ICEFLOE.79     
     +                    !    IF IT IS -VE, ICE ACCRETES THERE.           ICEFLOE.80     
     + SURFTEMP(IMT,JMT), ! IN TEMPERATURE OF THE TOP LAYER OF THE         ICEFLOE.81     
     +                    !        OCEAN AT THE START OF THE STEP.         ICEFLOE.82     
     + FKMP(IMT,JMT), ! Number of ocean levels for land mask.              ICEFLOE.83     
     + SURFSAL(IMT,JMT)   ! IN TRUE SALINITY OF THE TOP LAYER OF THE       ICEFLOE.84     
     +                    !    OCEAN AT THE START OF THE STEP.             ICEFLOE.85     
     +                    !    (NB DOES NOT HAVE 0.035 SUBTRACTED.)        ICEFLOE.86     
     &,anomiceh(IMT_IHY,JMT_IHY) ! IN Anom seaice heat flux (W/m2)         ORH1F305.5788   
     +,EDDYDIFF(JMT)      ! IN Eddy diff coeff for heat transfer between   ICEFLOE.95     
     +                    !    base of ice and top layer of ocean          ICEFLOE.96     
     +,AMX(JMT)           ! IN Maximum ice concentrations                  ICEFLOE.97     
      REAL DT,     ! IN TRACER TIMESTEP.                                   ICEFLOE.98     
     + H0,       ! IN Minimum (local) depth of newly-formed ice, in m.     ICEFLOE.99     
     + AICEMIN,  ! IN Min ice concentration allowed in an icy grid box.    ICEFLOE.100    
     + HICEMIN,  ! IN Min ice depth allowed in an icy grid box, in m.      OCC0F400.70     
     + RHOICE,   ! IN Density of ice, in kg/m**3.                          ICEFLOE.101    
     + RHOSNOW,  ! IN Density of snow, in kg/m**3.                         ICEFLOE.102    
     + RHOWATER, ! IN Density of water, in kg/m**3. Used for both fresh    OCC0F400.71     
     +           !   water and sea water.                                  OCC0F400.72     
     + DZ1Z,       ! IN THICKNESS OF THE OCEAN'S TOP LAYER, IN CM.         ICEFLOE.103    
     + RHOCP,      ! IN VOLUMETRIC HEAT CAPACITY OF SEA-WATER,             ICEFLOE.104    
     +             !      IN J/(K*M**3).                                   ICEFLOE.105    
     + TFREEZE,    ! IN FREEZING POINT OF SEAWATER. NOTE THAT IT           ICEFLOE.106    
     +             !      IS TREATED AS A CONSTANT IN THIS MODEL.          ICEFLOE.107    
     + SALICE,     ! IN SALINITY OF SEA-ICE IN KG PER KG. NOTE THAT IT     ICEFLOE.108    
     +             !    IS TREATED AS CONSTANT IN THE PRESENT VERSION.     ICEFLOE.109    
     + QFUSION     ! IN LATENT HEAT OF FUSION OF ICE, IN J/KG.             ICEFLOE.110    
     +,AICEMIZFRY  !IN Concentration below which O2I is fix wrt aice.      ODC1F405.440    
C                                                                          ICEFLOE.111    
      LOGICAL ICY(IMT,JMT), ! INOUT TRUE IF BOX CONTAINS ICE.              ICEFLOE.112    
     + NEWICE(IMT,JMT)      ! INOUT TRUE IF BOX WAS PREVIOUSLY FREE        ICEFLOE.113    
     +                      !      OF ICE, BUT ICE FORMS DURING STEP.      ICEFLOE.114    
      REAL AICE(IMT,JMT), ! INOUT ICE CONCENTRATION.                       ICEFLOE.115    
     + HICE(IMT,JMT),     ! INOUT MEAN ICE DEPTH OVER WHOLE GRID BOX.      ICEFLOE.116    
     + HSNOW(IMT,JMT),    ! INOUT SNOW DEPTH, NOT AVERAGED OVER GRID       ICEFLOE.117    
     +                    !      BOX, JUST OVER THE ICE PORTION.           ICEFLOE.118    
     + CARYHEAT(IMT,JMT), ! INOUT CARRYOVER ARRAY FOR MISCELLANEOUS        ICEFLOE.119    
     +                    !      HEAT FLUXES, TO AND FROM TRACER.          ICEFLOE.120    
     + OCEANFLX(IMT,JMT)  ! INOUT OCEAN TO ICE HEAT FLUX (W M-2)           ICEFLOE.121    
C                                                                          ICEFLOE.122    
      REAL                                                                 ICEFLOE.123    
     + CARYSALT(IMT,JMT)      ! OUT INCREMENT IN SALINITY DUE TO           ICEFLOE.124    
     +                        !    ICE/SNOW PROCESSES.                     ICEFLOE.125    
C                                                                          JT161193.405    
      REAL                                                                 JT161193.406    
     + dela_therm(icol_cyc,jmt) !out increment in aice(thermodynamics)     OJC3F400.31     
     +,delhi_therm(icol_cyc,jmt)!out increment in hice(thermodynamics)     OJC3F400.32     
     +,delhs_therm(icol_cyc,jmt)!out GBM inc in hsnow (thermodynamics)     OJG3F403.2      
     &,ddt_aice_therm(icol_cyc,jmt) ! OUT d/dt AICE                        OJG1F405.11     
     &,ddt_hice_therm(icol_cyc,jmt) ! OUT d/dt HICE                        OJG1F405.12     
     &,ddt_snow_therm(icol_cyc,jmt) ! OUT d/dt GBM snowdepth               OJG1F405.13     
C                                                                          JT161193.416    
      LOGICAL                                                              JT161193.417    
     + sf_dela_therm,sf_delhi_therm,sf_delhs_therm ! in  stash flags.      OJC3F400.34     
     &,sf_ddt_aice_therm,sf_ddt_hice_therm,sf_ddt_snow_therm               OJG1F405.14     
C*                                                                         ICEFLOE.126    
C     VARIABLES LOCAL TO THIS ROUTINE ARE NOW DEFINED.                     ICEFLOE.127    
C                                                                          ICEFLOE.128    
      INTEGER I,J         ! LOOP COUNTERS FOR COLUMNS AND ROWS.            ICEFLOE.129    
      REAL XSENERGY       ! TEMPORARY SCALAR VARIABLE FOR HOLDING          ICEFLOE.130    
     +                    ! AMOUNTS OF SURPLUS ENERGY.                     ICEFLOE.131    
     &,OCEANFLUX_UNDER_ICE(IMT,JMT)  !Area avg oceanflux in icy portion    ODC1F405.452    
C                                                                          ICEFLOE.132    
      REAL                                                                 JT161193.419    
     + AICE_OLD(IMT,JMT)  ! INITIAL ICE FRACTION.                          JT161193.420    
     +,HICE_OLD(IMT,JMT)  ! INITIAL ICE DEPTH.                             JT161193.421    
     +,HSNOW_OLD(IMT,JMT) ! INITIAL SNOW DEPTH.                            JT161193.422    
C                                                                          JT161193.423    
      REAL DELA(IMT,JMT), ! CHANGE IN AICE OVER ONE TIME STEP.             ICEFLOE.133    
     + DELH(IMT,JMT),     ! CHANGE IN HICE OVER ONE TIME STEP.             ICEFLOE.134    
     + ATMSFLUX(IMT,JMT), ! TOTAL NET SURFACE HEAT FLUX OVER LEADS.        ICEFLOE.135    
     + SUBLIM(IMT,JMT),   ! AREA-WEIGHTED VERSION OF SUBLIMZ.              ICEFLOE.136    
     + TOPMELT(IMT,JMT),  ! AREA-WEIGHTED VERSION OF TOPMELTZ.             ICEFLOE.137    
     + BOTMELT(IMT,JMT),  ! AREA-WEIGHTED VERSION OF BOTMELTZ.             ICEFLOE.138    
     + SNOWMELT(IMT,JMT), ! ARRAY FOR KEEPING TRACK OF AMOUNTS OF SNOW     ICEFLOE.139    
     +                    ! THAT MELT DURING THE STEP, FOR WORKING OUT     ICEFLOE.140    
     +                    ! THE SNOW CONTRIBUTION TO CARYSALT.             ICEFLOE.141    
     + WORKC(IMT,JMT)     ! WORK ARRAY.                                    ICEFLOE.143    
     +,CONST3(JMT)    ! The product of volumetric heat capacity of sea     ICEFLOE.144    
     +                ! water and ocean/ice eddy diff coeff divided by     ICEFLOE.145    
     +                ! half the thickness of the ocean top layer          ICEFLOE.146    
      LOGICAL OLDICE(IMT,JMT) ! RECORDS THE CONTENTS OF ICY AT THE         ICEFLOE.147    
     +                        ! START OF THE STEP.                         ICEFLOE.148    
     +,OCEAN(IMT,JMT) ! TRUE for ocean grid points,                        ICEFLOE.149    
     +                ! FALSE for land points.                             ICEFLOE.150    
C                                                                          ICEFLOE.151    
C     DEFINE LOCAL PARAMETERS.                                             ICEFLOE.152    
C                                                                          ICEFLOE.161    
      REAL H0R,  ! THE RECIPROCAL OF H0.                                   ICEFLOE.163    
     + DZ1,      ! THICKNESS OF THE OCEAN'S TOP LAYER, IN M.               ICEFLOE.164    
     + DTBYRHOS, ! THE RATIO OF THE TIMESTEP TO THE DENSITY OF SNOW.       ICEFLOE.165    
     + RHOSBYDT, ! THE RATIO OF THE DENSITY OF SNOW TO THE TIMESTEP.       ICEFLOE.166    
     + DTBYRHOI, ! THE RATIO OF THE TIMESTEP TO THE DENSITY OF ICE.        ICEFLOE.167    
     + DENRATIO, ! THE RATIO OF THE DENSITY OF ICE TO THAT OF WATER.       ICEFLOE.168    
     + DENRAT2,  ! THE RATIO OF THE DENSITY OF SNOW TO THAT OF WATER.      ICEFLOE.169    
     + DENRAT3,  ! THE RATIO OF THE DENSITY OF SNOW TO THAT OF ICE.        ICEFLOE.170    
     + DENRATM1  ! DENRATIO MINUS ONE.                                     ICEFLOE.171    
     &,DTR       ! Reciprocal of timestep DT                               OJG1F405.15     
C                                                                          ICEFLOE.172    
      REAL CONST1, ! THE RATIO OF DENRATIO TO THE THICKNESS OF             ICEFLOE.173    
     +           !   THE TOP LAYER OF THE OCEAN.                           ICEFLOE.174    
     + CONST2,   ! THE RATIO OF DENRAT2 TO THE THICKNESS OF THE TOP        ICEFLOE.175    
     +           !   LAYER OF THE OCEAN.                                   ICEFLOE.176    
     + CONST4,   ! THE RATIO OF THE TIMESTEP TO THE PRODUCT OF THE         ICEFLOE.177    
     +           !   REFERENCE DENSITY OF SEA-WATER AND THE THICKNESS      ICEFLOE.178    
     +           !   OF THE TOP LAYER OF THE OCEAN.                        ICEFLOE.179    
     + CONST5    ! THE PRODUCT OF CONST2 AND THE SALINITY OF ICE.          ICEFLOE.180    
C                                                                          ICEFLOE.181    
      REAL QI,   ! THE VOLUMETRIC HEAT OF FUSION OF ICE, IN J/M**3.        ICEFLOE.182    
     + QS,       ! THE VOLUMETRIC HEAT OF FUSION OF SNOW, IN J/M**3.       ICEFLOE.183    
     + QIR,      ! THE RECIPROCAL OF QI.                                   ICEFLOE.184    
     + QSR,      ! THE RECIPROCAL OF QS.                                   ICEFLOE.185    
     + QIRDT,    ! THE RATIO OF THE TIMESTEP TO THE VOLUMETRIC HEAT        ICEFLOE.186    
     +           !   OF FUSION OF ICE.                                     ICEFLOE.187    
     + QIBYDT,   ! THE RATIO OF THE VOLUMETRIC HEAT OF FUSION OF ICE       ICEFLOE.188    
     +           !   TO THE TIMESTEP.                                      ICEFLOE.189    
     + QSBYDT    ! THE RATIO OF THE VOLUMETRIC HEAT OF FUSION OF SNOW      ICEFLOE.190    
     +           !   TO THE TIMESTEP.                                      ICEFLOE.191    
C                                                                          ICEFLOE.192    
C     SET VARIOUS CONSTANTS,CONVERTING TO S.I. UNITS WHERE NECESSARY.      ICEFLOE.193    
      H0R = 1.0/H0                                                         ICEFLOE.195    
      DZ1 = DZ1Z*0.01                                                      ICEFLOE.196    
      DENRATIO = RHOICE/RHOWATER                                           ICEFLOE.197    
      DENRAT2 = RHOSNOW/RHOWATER                                           ICEFLOE.198    
      DENRAT3 = RHOSNOW/RHOICE                                             ICEFLOE.199    
      DENRATM1 = DENRATIO - 1.0                                            ICEFLOE.200    
      CONST1 = DENRATIO/DZ1                                                ICEFLOE.201    
      CONST2 = DENRAT2/DZ1                                                 ICEFLOE.202    
      QI = QFUSION*RHOICE                                                  ICEFLOE.203    
      QS = QFUSION*RHOSNOW                                                 ICEFLOE.204    
      QIR = 1.0/QI                                                         ICEFLOE.205    
      QSR = 1.0/QS                                                         ICEFLOE.206    
      QIRDT = QIR*DT                                                       ICEFLOE.207    
      QIBYDT = QI/DT                                                       ICEFLOE.208    
      QSBYDT = QS/DT                                                       ICEFLOE.209    
      CONST4 = DT/(RHOWATER*DZ1)                                           ICEFLOE.210    
      CONST5 = CONST2*SALICE                                               ICEFLOE.211    
      DTBYRHOI = DT/RHOICE                                                 ICEFLOE.212    
      DTBYRHOS = DT/RHOSNOW                                                ICEFLOE.213    
      RHOSBYDT = RHOSNOW/DT                                                ICEFLOE.214    
      DTR=1.0/DT                                                           OJG1F405.16     
C                                                                          ICEFLOE.215    
C      THE FOLLOWING CONDITION ARISES WHEN L_ONOPOLO = FALSE               ORH1F305.5796   
C     BECAUSE THE OCEAN MODEL HAS LAND IN ITS NORTHERNMOST ROW,WE NOW      ICEFLOE.216    
C     SET SURFTEMP TO FREEZING POINT THERE,THUS ZEROING OCEANFLX.          ICEFLOE.217    
C     A SIMILAR OPERATION IS PERFORMED FOR SURFSAL IN ADDITION.            ICEFLOE.218    
C                                                                          ICEFLOE.219    
*IF DEF,MPP                                                                ORH3F402.157    
      IF (JST.EQ.1) THEN                                                   ORH3F402.158    
         DO I = 1,IMT                                                      ORH3F402.159    
            SURFTEMP(I,J_1)= 0.0                                           ORH3F402.160    
            SURFSAL(I,J_1) = 0.0                                           ORH3F402.161    
            ICY(I,J_1)     = .FALSE.                                       ORH3F402.162    
            NEWICE(I,J_1)  = .FALSE.                                       ORH3F402.163    
            CARYHEAT(I,J_1)= 0.0                                           ORH3F402.164    
         ENDDO                                                             ORH3F402.165    
      ENDIF                                                                ORH3F402.166    
                                                                           ORH3F402.167    
      IF (JFIN.EQ.JMT_GLOBAL) THEN                                         ORH3F402.168    
         DO I = 1,IMT                                                      ORH3F402.169    
            IF (L_ONOPOLO) THEN                                            ORH3F402.170    
               SURFTEMP(I,J_JMT) = 0.0                                     ORH3F402.171    
               SURFSAL(I,J_JMT)  = 0.0                                     ORH3F402.172    
               ICY(I,J_JMT)      = .FALSE.                                 ORH3F402.173    
               CARYHEAT(I,J_JMT) = 0.0                                     ORH3F402.174    
            ELSE                                                           ORH3F402.175    
               SURFTEMP(I,J_JMT) = TFREEZE                                 ORH3F402.176    
               SURFSAL(I,J_JMT)  = SALICE                                  ORH3F402.177    
            ENDIF                                                          ORH3F402.178    
         ENDDO                                                             ORH3F402.179    
      ENDIF                                                                ORH3F402.180    
*ELSE                                                                      ORH3F402.181    
      DO 80 I = 1,IMT                                                      ICEFLOE.220    
       SURFTEMP(I,1)=0.0                                                   ICEFLOE.223    
       SURFSAL(I,1)=0.0                                                    ICEFLOE.224    
       ICY(I,1)=.FALSE.                                                    ICEFLOE.225    
         NEWICE(I,1)=.FALSE.                                               DW271093.1      
       CARYHEAT(I,1)=0.0                                                   ICEFLOE.226    
         IF (L_ONOPOLO) THEN                                               ORH1F305.5797   
        SURFTEMP(I,JMT) = 0.0                                              JT051193.14     
        SURFSAL(I,JMT) = 0.0                                               JT051193.15     
        ICY(I,JMT)=.FALSE.                                                 JT051193.16     
        CARYHEAT(I,JMT)=0.0                                                JT051193.17     
         ELSE                                                              ORH1F305.5798   
        SURFTEMP(I,JMT) = TFREEZE                                          JT051193.19     
        SURFSAL(I,JMT) = SALICE                                            JT051193.20     
         ENDIF                                                             ORH1F305.5799   
80    CONTINUE                                                             ICEFLOE.227    
*ENDIF                                                                     ORH3F402.182    
C                                                                          ICEFLOE.228    
      DO J = J_1, J_JMT                                                    ORH3F402.183    
         CONST3(J) = ( RHOCP*EDDYDIFF(J) )/( 0.5*DZ1 )                     ICEFLOE.230    
      DO I = 1,IMT                                                         OCS0F400.9      
        OLDICE(I,J) = ICY(I,J)                                             ICEFLOE.232    
         IF (L_ONOPOLO) THEN                                               ORH1F305.5800   
        OCEAN(I,J) = ( FKMP(I,J) .GT. 0.1 )                                JT051193.23     
         ELSE                                                              ORH1F305.5801   
        OCEAN(I,J) = ( FKMP(I,J) .GT. 0.1 .OR.                             ORH3F402.184    
     &                    J+J_OFFSET.EQ.JMT_GLOBAL )                       ORH3F402.185    
         ENDIF                                                             ORH1F305.5802   
C                                                                          ICEFLOE.234    
C     STORE THE INITIAL AREAL FRACTIONS FOR LATER USE IN UPDATING          ICEFLOE.235    
C     SNOW DEPTHS. THEN ZERO SOME ARRAYS.                                  ICEFLOE.236    
C                                                                          ICEFLOE.237    
        AICE_OLD(I,J)   = AICE(I,J)                                        JT161193.424    
        HICE_OLD(I,J)   = HICE(I,J)                                        JT161193.425    
        HSNOW_OLD(I,J)  = HSNOW(I,J)                                       JT161193.426    
        DELH(I,J) = 0.0                                                    ICEFLOE.239    
        DELA(I,J) = 0.0                                                    ICEFLOE.240    
        CARYSALT(I,J) = 0.0                                                ICEFLOE.241    
        SNOWMELT(I,J) = 0.0                                                ICEFLOE.242    
        WORKC(I,J) = 0.0                                                   ICEFLOE.243    
C                                                                          ICEFLOE.244    
C     1.FIND TOTAL DOWNWARD HEAT FLUX FROM ATMOSPHERE OVER THE LEADS,      ICEFLOE.245    
C         DIVIDING BY THE LEAD AREA TO CONSERVE ENERGY.                    ICEFLOE.246    
C     2.COMPUTE OCEAN-TO-ICE HEAT FLUX,USING THE OCEAN TEMPERATURE         ICEFLOE.247    
C         PASSED FROM TRACER IN SURFTEMP.                                  ICEFLOE.248    
C     3.DIVIDE TOPMELTZ,BOTMELTZ & SUBLIMZ BY THE CURRENT AREA OF ICE.     ICEFLOE.249    
C         THIS ENSURES ENERGY CONSERVATION,SINCE IN THE ATMOSPHERE         ICEFLOE.250    
C         MODEL THESE FLUXES WERE WEIGHTED BY THE THEN AREA OF ICE.        ICEFLOE.251    
C         NOTE THE USE OF LOCAL ARRAYS IN ORDER TO AVOID ALTERING          ICEFLOE.252    
C         THE DATASETS OF THESE QUANTITIES ON EXIT FROM THE ROUTINE.       ICEFLOE.253    
C     4.ZERO DEPTHS AT NON-ICE POINTS.                                     ICEFLOE.254    
C                                                                          ICEFLOE.255    
        IF ( ICY(I,J) ) THEN                                               ICEFLOE.256    
          ATMSFLUX(I,J) = HEATFLUX(I,J)/(1.0-AICE(I,J))                    OJC2F400.59     
          IF(L_HADCM4O2I) THEN                                             ODC1F405.441    
            IF(AICE(I,J).gt.AICEMIZFRY) THEN                               ODC1F405.442    
              OCEANFLX(I,J) =                                              ODC1F405.443    
     &              CONST3(J)*(SURFTEMP(I,J) - TFREEZE)*AICE(I,J)          ODC1F405.444    
            ELSE                                                           ODC1F405.445    
              OCEANFLX(I,J) =                                              ODC1F405.446    
     &              CONST3(J)*(SURFTEMP(I,J) - TFREEZE)*AICEMIZFRY         ODC1F405.447    
            ENDIF                                                          ODC1F405.448    
          ELSE                                                             ODC1F405.449    
            OCEANFLX(I,J) = CONST3(J)*(SURFTEMP(I,J) - TFREEZE)            ODC1F405.450    
          ENDIF                                                            ODC1F405.451    
          WORKC(I,J) = 1.0/AICE(I,J)                                       ICEFLOE.260    
          TOPMELT(I,J) = TOPMELTZ(I,J)*WORKC(I,J)                          ICEFLOE.261    
          BOTMELT(I,J) = BOTMELTZ(I,J)*WORKC(I,J)                          ICEFLOE.262    
          SUBLIM(I,J) = SUBLIMZ(I,J)*WORKC(I,J)                            ICEFLOE.263    
        ELSE                                                               ICEFLOE.264    
          HICE(I,J) = 0.0                                                  ICEFLOE.265    
          AICE(I,J) = 0.0                                                  ICEFLOE.266    
          HSNOW(I,J) = 0.0                                                 ICEFLOE.267    
          OCEANFLX(I,J) = 0.0                                              ICEFLOE.268    
          TOPMELT(I,J) = TOPMELTZ(I,J)                                     ICEFLOE.269    
          BOTMELT(I,J) = BOTMELTZ(I,J)                                     ICEFLOE.270    
          SUBLIM(I,J)  = SUBLIMZ(I,J)                                      ICEFLOE.271    
        ENDIF                                                              ICEFLOE.272    
C                                                                          ICEFLOE.273    
C ---------------------------------------------------------------------    ICEFLOE.274    
C     SPECIAL CODE FOR GRID BOXES WHERE ICE FORMATION IS JUST STARTING.    ICEFLOE.275    
C                                                                          ICEFLOE.276    
        IF ( NEWICE(I,J) ) THEN                                            ICEFLOE.277    
          DELH(I,J) = -QIRDT*CARYHEAT(I,J)                                 ICEFLOE.278    
          DELA(I,J) = H0R*DELH(I,J)                                        ICEFLOE.279    
          CARYHEAT(I,J) = 0.0                                              ICEFLOE.280    
        ENDIF                                                              ICEFLOE.281    
C                                                                          ICEFLOE.282    
C     END OF SPECIAL CODE FOR NEWLY-ICED GRID BOXES.                       ICEFLOE.283    
C --------------------------------------------------------------------     ICEFLOE.284    
C     THE NEXT CHUNK OF CODE IS UNNECESSARY FOR OCEAN-ONLY RUNS. IT        ICEFLOE.285    
C     ENSURES THAT IF ICE HAS DISAPPEARED FROM A GRID BOX DURING THE       ICEFLOE.286    
C     COUPLING INTERVAL, ANY ENERGY IN TOPMELT AND BOTMELT DOES NOT        ICEFLOE.287    
C     VANISH,BUT IS INSTEAD SUPPLIED TO THE OCEAN VIA CARYHEAT. NOTE       ICEFLOE.288    
C     THAT IF ICE REFORMED THIS STEP THE SAME WILL HAPPEN:THAT IS OK.      ICEFLOE.289    
C                                                                          ICEFLOE.290    
        IF (OCEAN(I,J) .AND. .NOT. ICY(I,J)) THEN                          ICEFLOE.291    
          CARYHEAT(I,J) = CARYHEAT(I,J) + TOPMELT(I,J) + BOTMELT(I,J)      ORH1F305.5806   
        ENDIF                                                              ICEFLOE.293    
C                                                                          ICEFLOE.294    
        IF ( OLDICE(I,J) ) THEN                                            ICEFLOE.295    
C                                                                          ICEFLOE.296    
C     UPDATE THE SNOW DEPTH. (NOTE THAT SUBLIMATION DOES NOT COUNT AS      ICEFLOE.297    
C     MELTING FOR PURPOSES OF UPDATING SALINITY. ALSO, ANY NEGATIVE        ICEFLOE.298    
C     SUBLIMATION,I.E. FROST,GETS USED HERE TO INCREASE SNOW DEPTH.        ICEFLOE.299    
C     IT DOES NOT PENETRATE TO THE ICE SECTION OF THE CODE.)               ICEFLOE.300    
C                                                                          ICEFLOE.301    
          SNOWMELT(I,J) = DT*QSR*TOPMELT(I,J)                              ICEFLOE.302    
          HSNOW(I,J) = DTBYRHOS*(SNOWRATE(I,J) - SUBLIM(I,J))              ICEFLOE.303    
     %                   + HSNOW(I,J)                                      ICEFLOE.304    
          IF ( HSNOW(I,J) .GE. 0.0 ) THEN                                  ICEFLOE.305    
            SUBLIM(I,J) = 0.0                                              ICEFLOE.306    
          ELSE                                                             ICEFLOE.307    
            SUBLIM(I,J) = - RHOSBYDT*HSNOW(I,J)                            ICEFLOE.308    
            HSNOW(I,J) = 0.0                                               ICEFLOE.309    
          ENDIF                                                            ICEFLOE.310    
C                                                                          ICEFLOE.311    
C     SUBLIM NOW CONTAINS ANY SUBLIMATION UNUSED DUE TO LACK OF SNOW.      ICEFLOE.312    
C                                                                          ICEFLOE.313    
          HSNOW(I,J) = HSNOW(I,J) - SNOWMELT(I,J)                          ICEFLOE.314    
C                                                                          ICEFLOE.315    
C     IF SNOW GOES -VE,USE EXCESS HEAT TO MELT ICE INSTEAD,AND CORRECT     ICEFLOE.316    
C     THE VALUE OF SNOWMELT.                                               ICEFLOE.317    
C                                                                          ICEFLOE.318    
          IF ( HSNOW(I,J) .LT. 0.0 ) THEN                                  ICEFLOE.319    
            XSENERGY = -QS*HSNOW(I,J)                                      ICEFLOE.320    
            SNOWMELT(I,J) = SNOWMELT(I,J) + HSNOW(I,J)                     ICEFLOE.321    
            HSNOW(I,J) = 0.0                                               ICEFLOE.322    
          ELSE                                                             ICEFLOE.323    
            XSENERGY = 0.0                                                 ICEFLOE.324    
          ENDIF                                                            ICEFLOE.325    
C                                                                          ICEFLOE.326    
C     AVERAGE SNOWMELT OVER WHOLE GRID BOX AND SCREEN OUT -VE VALUES.      ICEFLOE.327    
C                                                                          ICEFLOE.328    
          IF ( SNOWMELT(I,J) .LT. 0.0 ) THEN                               ICEFLOE.329    
            SNOWMELT(I,J) = 0.0                                            ICEFLOE.330    
          ELSE                                                             ICEFLOE.331    
            SNOWMELT(I,J) = SNOWMELT(I,J)*AICE(I,J)                        ICEFLOE.332    
          ENDIF                                                            ICEFLOE.333    
C                                                                          ICEFLOE.334    
C     CALCULATE CHANGE IN ICE DEPTH OVER THE ICE FRACTION.                 ICEFLOE.335    
C                                                                          ICEFLOE.336    
          if (l_hadcm4o2i) then                                            ODC1F405.453    
            OCEANFLUX_UNDER_ICE(I,J)=OCEANFLX(I,J)                         ODC1F405.454    
     &      /max(AICE(I,J),AICEMIN)                                        ODC1F405.455    
            DELH(I,J) = - QIR*XSENERGY - DTBYRHOI*SUBLIM(I,J)              ODC1F405.456    
     &      - QIRDT*( CARYHEAT(I,J) + OCEANFLUX_UNDER_ICE(I,J)             ODC1F405.457    
     &                                        + BOTMELT(I,J) )             ODC1F405.458    
          else                                                             ODC1F405.459    
            DELH(I,J) = - QIR*XSENERGY - DTBYRHOI*SUBLIM(I,J)              ODC1F405.460    
     &      - QIRDT*( CARYHEAT(I,J) + OCEANFLX(I,J) + BOTMELT(I,J) )       ODC1F405.461    
          endif                                                            ODC1F405.462    
         IF (L_IHANEY) THEN                                                ORH1F305.5808   
C     ADD IN ANOMALOUS HEAT  OVER ICE FRACTION                             ICEFLOE.342    
C                                                                          ICEFLOE.343    
          DELH(I,J) = DELH(I,J)-QIRDT*anomiceh(I,J)                        ICEFLOE.344    
         ENDIF                                                             ORH1F305.5809   
C                                                                          ICEFLOE.353    
C     FORM WEIGHTED MEAN OF DEPTH CHANGES OVER ICE AND OVER LEADS.         ICEFLOE.354    
C                                                                          ICEFLOE.355    
          if (l_hadcm4o2i) then                                            ODC1F405.463    
            WORKC(I,J) = DT*(QFUSION*SNOWRATE(I,J) - CARYHEAT(I,J)         ODC1F405.464    
     &                   - ATMSFLUX(I,J))                                  ODC1F405.465    
          else                                                             ODC1F405.466    
            WORKC(I,J) = DT*(QFUSION*SNOWRATE(I,J) - CARYHEAT(I,J)         ODC1F405.467    
     &                   - ATMSFLUX(I,J) - OCEANFLX(I,J))                  ODC1F405.468    
          endif                                                            ODC1F405.469    
         IF (L_IHANEY) THEN                                                ORH1F305.5810   
C                                                                          ICEFLOE.360    
C     ADD IN ANOMALOUS HEAT  OVER LEADS FRACTION                           ICEFLOE.361    
C                                                                          ICEFLOE.362    
          WORKC(I,J) = WORKC(I,J)-DT*anomiceh(I,J)                         ICEFLOE.363    
         ENDIF                                                             ORH1F305.5811   
          DELH(I,J) = QIR*WORKC(I,J)*( 1.0 - AICE(I,J) )                   ICEFLOE.372    
     %              + DELH(I,J)*AICE(I,J)                                  ICEFLOE.373    
C                                                                          ICEFLOE.374    
C     REWEIGHT UNUSED SUBLIMATION BY THE AREAL FRACTION.                   ICEFLOE.375    
C                                                                          ICEFLOE.376    
          SUBLIM(I,J) = SUBLIM(I,J)*AICE(I,J)                              ICEFLOE.377    
        ENDIF                                                              OCS0F400.10     
      ENDDO                                                                OCS0F400.11     
      ENDDO                                                                OCS0F400.12     
c                                                                          OCS0F400.13     
c    For icy grid boxes the input CARYHEAT has served its purpose,         OCS0F400.14     
c   so zero it before filling with output values. Do not interfere         OCS0F400.15     
c   with non-icy grid boxes.                                               OCS0F400.16     
c                                                                          OCS0F400.17     
      DO j=J_1,J_jmt                                                       ORH3F402.186    
      DO i=1,imt                                                           OCS0F400.19     
        IF (oldice(i,j)) caryheat(i,j)=0.0                                 OCS0F400.20     
      ENDDO                                                                OCS0F400.21     
      ENDDO                                                                OCS0F400.22     
c                                                                          OCS0F400.23     
c    Look to see whether all ice is going to melt: if so, update ice,      OCS0F400.24     
c   snow, and ocean variables accordingly.                                 OCS0F400.25     
c                                                                          OCS0F400.26     
       CALL ice_h_lt_hicemin(                                              OCS0F400.27     
*CALL ARGOINDX                                                             ORH7F402.243    
     & imt,jmt                                                             OCS0F400.28     
     &,qibydt,qsbydt,salice                                                OCS0F400.29     
     &,const1,const2,const4                                                OCS0F400.30     
     &,surfsal,sublim                                                      OCS0F400.31     
     &,hice,aice,hsnow                                                     OCS0F400.32     
     &,delh,dela,hicemin                                                   OCS0F400.33     
     &,caryheat,carysalt,snowmelt                                          OCS0F400.34     
     &,icy                                                                 OCS0F400.35     
     & ,salref)                                                            OJL1F405.76     
C                                                                          ICEFLOE.378    
C     IF ICE WILL REMAIN,CALCULATE THE CHANGE IN THE AREAL FRACTION.       ICEFLOE.400    
C                                                                          ICEFLOE.401    
      DO j=J_1,J_jmt                                                       ORH3F402.187    
      DO i=1,imt                                                           OCS0F400.38     
        IF (oldice(i,j).and.(hice(i,j)+delh(i,j)).ge.hicemin) THEN         OCS0F400.39     
            IF (WORKC(I,J) .GT. 0.0) THEN                                  ICEFLOE.403    
              DELA(I,J) = ( 1.0 - AICE(I,J) )*H0R*QIR*WORKC(I,J)           ICEFLOE.404    
            ENDIF                                                          ICEFLOE.405    
            IF (DELH(I,J) .LT. 0.0) THEN                                   ICEFLOE.406    
              DELA(I,J) = ( AICE(I,J)*DELH(I,J) ) / ( 2.0*HICE(I,J) )      ICEFLOE.407    
     &                   + DELA(I,J)                                       OCS0F400.40     
            ENDIF                                                          ICEFLOE.409    
          ENDIF                                                            ICEFLOE.410    
      ENDDO                                                                OCS0F400.41     
      ENDDO                                                                OCS0F400.42     
C                                                                          ICEFLOE.412    
C     TRAP AREAL FRACTIONS GREATER THAN THE SPECIFIED MAXIMA,              ICEFLOE.425    
C     OR LESS THAN THE SPECIFIED MINIMUM.                                  ICEFLOE.426    
C                                                                          ICEFLOE.427    
      CALL ice_a_gt_max(                                                   OCS0F400.43     
*CALL ARGOINDX                                                             ORH7F402.244    
     & imt,jmt                                                             OCS0F400.44     
     &,amx,aice                                                            OCS0F400.45     
     &,dela                                                                OCS0F400.46     
     & )                                                                   OCS0F400.47     
C                                                                          ICEFLOE.436    
      CALL ice_a_lt_min(                                                   OCS0F400.48     
*CALL ARGOINDX                                                             ORH7F402.245    
     & imt,jmt                                                             OCS0F400.49     
     &,aicemin,aice                                                        OCS0F400.50     
     &,icy,newice                                                          OCS0F400.51     
     &,dela                                                                OCS0F400.52     
     & )                                                                   OCS0F400.53     
C                                                                          ICEFLOE.437    
C                                                                          ICEFLOE.444    
C     RESET ICY TO INCLUDE NEWLY-ICED POINTS. THEN UPDATE ICE DEPTHS       OCS0F400.54     
C     AND AREAL FRACTIONS. (NEWLY-MELTED POINTS WON'T BE UPDATED.)         OCS0F400.55     
C                                                                          ICEFLOE.448    
      CALL ice_update_ice(                                                 OCS0F400.56     
*CALL ARGOINDX                                                             ORH7F402.246    
     & imt,jmt                                                             OCS0F400.57     
     &,delh,dela,newice                                                    OCS0F400.58     
     &,hice,aice,icy                                                       OCS0F400.59     
     & )                                                                   OCS0F400.60     
C                                                                          ICEFLOE.453    
C     Update ocean variables caryheat and carysalt                         OCS0F400.61     
C     and alter snowrate if necessary.                                     OCS0F400.62     
C                                                                          ICEFLOE.456    
      CALL ice_update_ocean(                                               OCS0F400.63     
*CALL ARGOINDX                                                             ORH7F402.247    
     & imt,jmt                                                             OCS0F400.64     
     &,qsbydt,salice,const1,const2,const4                                  OCS0F400.65     
     &,surfsal,sublim,newice                                               OCS0F400.66     
     &,hsnow,delh,dela                                                     OCS0F400.67     
     &,caryheat,carysalt,snowmelt                                          OCS0F400.68     
     &,icy                                                                 OCS0F400.69     
     & ,salref)                                                            OJL1F405.77     
C                                                                          ICEFLOE.460    
C     Redistribute snow over ice if necessary.                             OCS0F400.71     
C                                                                          ICEFLOE.465    
      CALL ice_update_snow(                                                OCS0F400.72     
*CALL ARGOINDX                                                             ORH7F402.248    
     & imt,jmt                                                             OCS0F400.73     
     &,aice,dela                                                           OCS0F400.74     
     &,hsnow                                                               OCS0F400.75     
     & )                                                                   OCS0F400.76     
C                                                                          ICEFLOE.470    
C                                                                          ICEFLOE.474    
C     THE NEXT SECTION OF CODE DEALS WITH THE FORMATION OF 'WHITE'         ICEFLOE.487    
C     ICE, WHICH OCCURS WHEN SNOW ACCUMULATES TO SUCH AN EXTENT THAT       ICEFLOE.488    
C     THE SNOW/ICE INTERFACE SINKS BELOW THE WATERLINE. IT BEGINS BY       ICEFLOE.489    
C     FINDING THE HEIGHT OF THE WATERLINE ABOVE THE TOP OF THE ICE.        ICEFLOE.490    
C                                                                          ICEFLOE.491    
      DO j = j_1, J_JMT                                                    ORH3F402.188    
      DO i=1,imt                                                           OCS0F400.78     
C                                                                          OCS0F400.79     
        IF ( ICY(I,J) ) THEN                                               ICEFLOE.492    
          WORKC(I,J) = (HICE(I,J)/AICE(I,J))*DENRATM1                      ICEFLOE.493    
     %                        + DENRAT2*HSNOW(I,J)                         ICEFLOE.494    
C                                                                          ICEFLOE.495    
C     IF THIS HEIGHT IS POSITIVE, IT INDICATES THE DEPTH OF SNOW           ICEFLOE.496    
C     THAT WILL BE CONVERTED TO ICE. THIS REQUIRES THE ADDITION OF         ICEFLOE.497    
C     SALT, SO CARYSALT IS UPDATED TO REMOVE THE SALT FROM THE OCEAN.      ICEFLOE.498    
C                                                                          ICEFLOE.499    
          IF ( WORKC(I,J) .GT. 0.0 ) THEN                                  ICEFLOE.500    
            HSNOW(I,J) = HSNOW(I,J) - WORKC(I,J)                           ICEFLOE.501    
            WORKC(I,J) = WORKC(I,J)*AICE(I,J)                              ICEFLOE.502    
            HICE(I,J) = HICE(I,J) + DENRAT3*WORKC(I,J)                     ICEFLOE.503    
            CARYSALT(I,J) = CARYSALT(I,J) - CONST5*WORKC(I,J)              ICEFLOE.504    
          ENDIF                                                            ICEFLOE.505    
        ENDIF                                                              ICEFLOE.506    
C                                                                          ICEFLOE.507    
      ENDDO                                                                OCS0F400.80     
      ENDDO                                                                OCS0F400.81     
C                                                                          ICEFLOE.510    
C     ZERO CARYSALT ON THE NORTHERNMOST ROW, FOR SAFETY.                   ICEFLOE.511    
C                                                                          ICEFLOE.512    
*IF DEF,MPP                                                                ORH3F402.189    
      ! only the process dealing with the last row needs                   ORH3F402.190    
      ! set carysalt to 0.0 on JMT.                                        ORH3F402.191    
      IF (JFIN.EQ.JMT_GLOBAL) THEN                                         ORH3F402.192    
         DO I = 1,IMT                                                      ORH3F402.193    
            CARYSALT(I,J_JMT) = 0.0                                        ORH3F402.194    
         ENDDO                                                             ORH3F402.195    
      ENDIF                                                                ORH3F402.196    
*ELSE                                                                      ORH3F402.197    
      DO 650 I = 1,IMT                                                     ICEFLOE.513    
        CARYSALT(I,JMT) = 0.0                                              ICEFLOE.514    
650   CONTINUE                                                             ICEFLOE.515    
*ENDIF                                                                     ORH3F402.198    
C                                                                          OJC0F400.2      
C     Convert CARYSALT to rate, for independence from timestep             OJC0F400.3      
C                                                                          OJC0F400.4      
      DO J=J_1,J_JMT                                                       ORH3F402.199    
      DO I=1,IMT                                                           OJC0F400.6      
        CARYSALT(I,J)=CARYSALT(I,J)/DT                                     OJC0F400.7      
      ENDDO                                                                OJC0F400.8      
      ENDDO                                                                OJC0F400.9      
      IF (L_OCYCLIC) THEN                                                  ORH1F305.5812   
C                                                                          ICEFLOE.518    
C     ENSURE THAT ICE VARIABLES ARE CYCLIC. THIS IS THOUGHT TO BE          ICEFLOE.519    
C     UNNECESSARY,PROVIDED THAT THE ICE CODE IN TRACER MAKES NEWICE        ICEFLOE.520    
C     AND CARYHEAT CYCLIC. HOWEVER IT IS A SENSIBLE SAFETY DEVICE.         ICEFLOE.521    
C                                                                          ICEFLOE.522    
      DO 660 J = J_1,J_JMT                                                 ORH3F402.200    
        ICY(1,J) = ICY(IMTM1,J)                                            ICEFLOE.524    
        ICY(IMT,J) = ICY(2,J)                                              ICEFLOE.525    
        AICE(1,J) = AICE(IMTM1,J)                                          ICEFLOE.526    
        AICE(IMT,J) = AICE(2,J)                                            ICEFLOE.527    
        HICE(1,J) = HICE(IMTM1,J)                                          ICEFLOE.528    
        HICE(IMT,J) = HICE(2,J)                                            ICEFLOE.529    
        HSNOW(1,J) = HSNOW(IMTM1,J)                                        ICEFLOE.530    
        HSNOW(IMT,J) = HSNOW(2,J)                                          ICEFLOE.531    
        OCEANFLX(1,J) = OCEANFLX(IMTM1,J)                                  ICEFLOE.532    
        OCEANFLX(IMT,J) = OCEANFLX(2,J)                                    ICEFLOE.533    
        CARYHEAT(1,J) = CARYHEAT(IMTM1,J)                                  ICEFLOE.534    
        CARYHEAT(IMT,J) = CARYHEAT(2,J)                                    ICEFLOE.535    
        CARYSALT(1,J) = CARYSALT(IMTM1,J)                                  ICEFLOE.536    
        CARYSALT(IMT,J) = CARYSALT(2,J)                                    ICEFLOE.537    
660   CONTINUE                                                             ICEFLOE.538    
      ENDIF                                                                ORH1F305.5813   
C                                                                          JT161193.434    
C COPY DIAGNOSTICS TO STASH WORKSPACE                                      JT161193.435    
C                                                                          JT161193.436    
      IF (sf_dela_therm) THEN                                              OJC3F400.35     
       DO J=J_1,J_JMT                                                      ORH3F402.201    
         DO I=1, ICOL_CYC                                                  ORH1F305.5814   
                                                                           ORH1F305.5815   
            IF (OCEAN(I,J))                                                JT161193.444    
     &      dela_therm(I,J) = AICE(I,J) - AICE_OLD(I,J)                    OJC3F400.36     
          END DO                                                           JT161193.446    
        END DO                                                             JT161193.447    
      ENDIF                                                                JT161193.448    
      IF (sf_ddt_aice_therm) THEN                                          OJG1F405.17     
        DO J=J_1,J_JMT                                                     OJG1F405.18     
          DO I=1, ICOL_CYC                                                 OJG1F405.19     
            IF (OCEAN(I,J))                                                OJG1F405.20     
     &      ddt_aice_therm(I,J) = DTR*(AICE(I,J) - AICE_OLD(I,J))          OJG1F405.21     
          END DO                                                           OJG1F405.22     
        END DO                                                             OJG1F405.23     
      ENDIF                                                                OJG1F405.24     
      IF (sf_delhi_therm) THEN                                             OJC3F400.37     
       DO J=J_1,J_JMT                                                      ORH3F402.202    
         DO I=1, ICOL_CYC                                                  ORH1F305.5816   
            IF (OCEAN(I,J))                                                JT161193.456    
     &      delhi_therm(I,J) = HICE(I,J) - HICE_OLD(I,J)                   OJC3F400.38     
          END DO                                                           JT161193.458    
        END DO                                                             JT161193.459    
      ENDIF                                                                JT161193.460    
      IF (sf_ddt_hice_therm) THEN                                          OJG1F405.25     
        DO J=J_1,J_JMT                                                     OJG1F405.26     
          DO I=1, ICOL_CYC                                                 OJG1F405.27     
            IF (OCEAN(I,J))                                                OJG1F405.28     
     &      ddt_hice_therm(I,J) = DTR*(HICE(I,J) - HICE_OLD(I,J))          OJG1F405.29     
          END DO                                                           OJG1F405.30     
        END DO                                                             OJG1F405.31     
      ENDIF                                                                OJG1F405.32     
      IF (sf_delhs_therm) THEN                                             OJC3F400.39     
       DO J=J_1,J_JMT                                                      ORH3F402.203    
         DO I=1, ICOL_CYC                                                  ORH1F305.5817   
            IF (OCEAN(I,J))                                                JT161193.468    
     &      delhs_therm(I,J) = HSNOW(I,J)*AICE(I,J)                        OJG3F403.3      
     &      -HSNOW_OLD(I,J)*AICE_OLD(I,J)                                  OJG3F403.4      
          END DO                                                           JT161193.470    
        END DO                                                             JT161193.471    
      ENDIF                                                                JT161193.472    
      IF (sf_ddt_snow_therm) THEN                                          OJG1F405.33     
        DO J=J_1,J_JMT                                                     OJG1F405.34     
          DO I=1, ICOL_CYC                                                 OJG1F405.35     
            IF (OCEAN(I,J))                                                OJG1F405.36     
     &      ddt_snow_therm(I,J) = DTR*(HSNOW(I,J)*AICE(I,J)                OJG1F405.37     
     &      -HSNOW_OLD(I,J)*AICE_OLD(I,J))                                 OJG1F405.38     
          END DO                                                           OJG1F405.39     
        END DO                                                             OJG1F405.40     
      ENDIF                                                                OJG1F405.41     
C                                                                          ICEFLOE.541    
*IF DEF,MPP                                                                ORH5F403.241    
      IF (sf_dela_therm)                                                   ORH5F403.242    
     &CALL SWAPBOUNDS(dela_therm,ICOL_CYC,JMT,O_EW_HALO,O_NS_HALO,1)       ORH5F403.243    
      IF (sf_delhi_therm)                                                  ORH5F403.244    
     &CALL SWAPBOUNDS(delhi_therm,ICOL_CYC,JMT,O_EW_HALO,O_NS_HALO,1)      ORH5F403.245    
      IF (sf_delhs_therm)                                                  ORH5F403.246    
     &CALL SWAPBOUNDS(delhs_therm,ICOL_CYC,JMT,O_EW_HALO,O_NS_HALO,1)      ORH5F403.247    
      IF (sf_ddt_aice_therm) CALL SWAPBOUNDS(ddt_aice_therm                OJG1F405.42     
     &,ICOL_CYC,JMT,O_EW_HALO,O_NS_HALO,1)                                 OJG1F405.43     
      IF (sf_ddt_hice_therm) CALL SWAPBOUNDS(ddt_hice_therm                OJG1F405.44     
     &,ICOL_CYC,JMT,O_EW_HALO,O_NS_HALO,1)                                 OJG1F405.45     
      IF (sf_ddt_snow_therm) CALL SWAPBOUNDS(ddt_snow_therm                OJG1F405.46     
     &,ICOL_CYC,JMT,O_EW_HALO,O_NS_HALO,1)                                 OJG1F405.47     
*ENDIF                                                                     ORH5F403.248    
      RETURN                                                               ICEFLOE.542    
      END                                                                  ICEFLOE.543    
*ENDIF                                                                     ICEFLOE.544