*IF DEF,SEAICE                                                             ORH1F305.466    
C ******************************COPYRIGHT******************************    GTS2F400.7741   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.7742   
C                                                                          GTS2F400.7743   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.7744   
C restrictions as set forth in the contract.                               GTS2F400.7745   
C                                                                          GTS2F400.7746   
C                Meteorological Office                                     GTS2F400.7747   
C                London Road                                               GTS2F400.7748   
C                BRACKNELL                                                 GTS2F400.7749   
C                Berkshire UK                                              GTS2F400.7750   
C                RG12 2SZ                                                  GTS2F400.7751   
C                                                                          GTS2F400.7752   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.7753   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.7754   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.7755   
C Modelling at the above address.                                          GTS2F400.7756   
C ******************************COPYRIGHT******************************    GTS2F400.7757   
C                                                                          GTS2F400.7758   
C*LL                                                                       PSEUDAIR.3      
CLL   SUBROUTINE PSEUDAIR                                                  PSEUDAIR.4      
CLL   -------------------                                                  PSEUDAIR.5      
CLL                                                                        PSEUDAIR.6      
CLL   PSEUDO ATMOSPHERIC MODEL TO PROVIDE THE OCEAN HALF OF THE            PSEUDAIR.7      
CLL   THERMODYNAMIC SEA ICE MODEL WITH THE FORCING IT EXPECTS.             PSEUDAIR.8      
CLL                                                                        PSEUDAIR.9      
CLL   THIS ROUTINE FORMS PART OF SYSTEM COMPONENT P4.                      PSEUDAIR.10     
CLL   IT CAN BE COMPILED BY CFT77, BUT DOES NOT CONFORM TO ANSI            PSEUDAIR.11     
CLL   FORTRAN77 STANDARDS, BECAUSE OF THE INLINE COMMENTS.                 PSEUDAIR.12     
CLL   IT ADHERES TO THE STANDARDS OF DOCUMENTATION PAPER 4, VERSION 1.     PSEUDAIR.13     
CLL                                                                        PSEUDAIR.14     
CLL   ALL QUANTITIES IN THIS ROUTINE ARE IN S.I. UNITS UNLESS              PSEUDAIR.15     
CLL   OTHERWISE STATED.                                                    PSEUDAIR.16     
CLL                                                                        PSEUDAIR.17     
CLL   WRITTEN BY J.F.THOMSON (18/01/91)                                    PSEUDAIR.18     
CLL   VERSION NUMBER 1.1                                                   PSEUDAIR.19     
CLL   REVIEWED BY H.CATTLE (22/02/91)                                      PSEUDAIR.20     
CLL                                                                        PSEUDAIR.21     
!     Modification History:                                                ORH1F305.4889   
!   Version    Date     Details                                            ORH1F305.4890   
!   -------  -------    ------------------------------------------         ORH1F305.4891   
!     3.5    16.01.95   Remove *IF dependency. R.Hill                      ORH1F305.4892   
!     4.0               Removed redundant variables. J.F.Crossley          OJC3F400.26     
!     4.0               Weight heatflux by ice fraction in models          OJC2F400.1      
!                       with ice dynamics. J.F.Crossley                    OJC2F400.2      
!     4.5    10.08/97   New dynamic ice control logicals                   ODC1F405.385    
CLLEND---------------------------------------------------------------      PSEUDAIR.22     
C*L                                                                        PSEUDAIR.23     

      SUBROUTINE PSEUDAIR(                                                  1PSEUDAIR.24     
*CALL ARGOINDX                                                             ORH7F402.117    
C INOUT : PRIMARY VARIABLES.                                               PSEUDAIR.26     
     & ICY                                                                 PSEUDAIR.27     
     &,AICE                                                                PSEUDAIR.28     
     &,HICE                                                                PSEUDAIR.29     
     &,HSNOW                                                               PSEUDAIR.30     
C                                                                          PSEUDAIR.31     
C IN : CLIMATOLOGICAL FORCING DATA.                                        PSEUDAIR.32     
     &,SOLICE                                                              PSEUDAIR.33     
     &,TAIR                                                                PSEUDAIR.34     
C                                                                          PSEUDAIR.36     
C OUT : FIELDS REQUIRED BY ICEFLOE - CALCULATED FROM FORCING DATA.         PSEUDAIR.37     
     &,TOPMELT                                                             PSEUDAIR.38     
     &,BOTMELT                                                             PSEUDAIR.39     
     &,HEATFLUX                                                            PSEUDAIR.40     
     &,SOLARFLX                                                            PSEUDAIR.41     
C                                                                          PSEUDAIR.43     
C IN : CONSTANTS REQUIRED BY PSEUDAIR.                                     PSEUDAIR.44     
C                                                                          PSEUDAIR.45     
     &,TFREEZE                                                             PSEUDAIR.46     
     &,RHOCP                                                               PSEUDAIR.47     
     &,IMT                                                                 PSEUDAIR.48     
     &,JMT                                                                 PSEUDAIR.49     
     & )                                                                   PSEUDAIR.50     
C                                                                          PSEUDAIR.51     
      IMPLICIT NONE                                                        PSEUDAIR.52     
C                                                                          PSEUDAIR.53     
*CALL CNTLOCN                                                              ORH1F305.4893   
*CALL TYPOINDX                                                             ORH7F402.118    
C                                                                          PSEUDAIR.54     
      INTEGER                                                              PSEUDAIR.55     
     & IMT            ! NUMBER OF POINTS IN A ROW.                         PSEUDAIR.56     
     &,JMT            ! NUMBER OF POINTS IN A COLUMN.                      PSEUDAIR.57     
      REAL                                                                 PSEUDAIR.58     
     & AICE(IMT,JMT)  ! FRACTIONAL ICE CONCENTRATION.                      PSEUDAIR.59     
     &,HICE(IMT,JMT)  ! ICE DEPTH AVERAGED OVER GRID SQUARE (IN M).        PSEUDAIR.60     
     &,HSNOW(IMT,JMT) ! SNOW DEPTH OVER ICE FRACTION ONLY (IN M).          PSEUDAIR.61     
     &,SOLICE(IMT,JMT) ! INCIDENT SOLAR RADIATION (IN W M-2))              PSEUDAIR.62     
     &,TAIR(IMT,JMT)   ! SURFACE AIR TEMPERATURE (IN CELSIUS)              PSEUDAIR.63     
     &,TOPMELT(IMT,JMT)  ! RATE OF MELTING OF SNOW (IN W M-2)              PSEUDAIR.65     
     &                   ! CAN BE TRANSFERRED TO ICE                       PSEUDAIR.66     
     &,BOTMELT(IMT,JMT)  ! DIFFUSIVE HEAT FLUX THROUGH ICE. IF THE         PSEUDAIR.67     
     &                   ! DIFFERENCE BETWEEN THIS AND OCEANFLX            PSEUDAIR.68     
     &                   ! IS +VE, ICE MELTS AT THE BASE. IF IT IS         PSEUDAIR.69     
     &                   ! -VE ICE ACCRETES THERE. (IN W M-2)              PSEUDAIR.70     
     &,HEATFLUX(IMT,JMT) ! NET NON-PENETRATIVE HEAT FLUX OVER LEADS.       PSEUDAIR.71     
     &                   ! (IN W M-2)                                      PSEUDAIR.72     
     &,SOLARFLX(IMT,JMT) ! NET PENETRATIVE HEAT FLUX OVER LEADS.           PSEUDAIR.73     
     &                   ! (IN W M-2)                                      PSEUDAIR.74     
      LOGICAL                                                              PSEUDAIR.76     
     & ICY(IMT,JMT)   ! TRUE IF BOX CONTAINS ICE.                          PSEUDAIR.77     
      REAL                                                                 PSEUDAIR.78     
     & TFREEZE        ! FREEZING POINT OF SEA WATER (IN CELSIUS)           PSEUDAIR.79     
     &,RHOCP          ! VOLUMETRIC HEAT CAPACITY OF WATER                  PSEUDAIR.80     
     &                ! (IN J K-1 M-3)                                     PSEUDAIR.81     
C                                                                          PSEUDAIR.82     
C VARIABLES LOCAL TO THIS SUBROUTINE ARE NOW DEFINED                       PSEUDAIR.83     
C                                                                          PSEUDAIR.84     
      LOGICAL                                                              PSEUDAIR.85     
     & LSNOW(IMT,JMT)   ! TRUE IF A GRID BOX CONTAINS MORE THAN THE        PSEUDAIR.86     
     &                  ! MINIMUM SNOW DEPTH                               PSEUDAIR.87     
     &,LNOSNOW(IMT,JMT) ! TRUE FOR ICY BOXES WITH SNOWDEPTH LESS THAN      PSEUDAIR.88     
     &                  ! MINIMUM SNOW DEPTH                               PSEUDAIR.89     
     &,LMELT(IMT,JMT)   ! TRUE FOR ICY BOXES WHERE SURFACE IS MELTING      PSEUDAIR.90     
      REAL                                                                 PSEUDAIR.91     
     & RGAMMA(IMT,JMT)  ! THERMAL RESISTANCE OF ICE&SNOW COMBINATION.      PSEUDAIR.92     
     &,GAMMA(IMT,JMT)   ! RECIPROCAL OF RGAMMA (IN W M-2 K-1.)             PSEUDAIR.93     
     &,ATMSFLUX(IMT,JMT) ! TOTAL NET SURFACE HEAT FLUX OVER LEADS.         PSEUDAIR.94     
     &                   ! (IN W M-2)                                      PSEUDAIR.95     
     &,COALB(IMT,JMT)   ! SURFACE COALBEDOS. (1 - ALBEDO)                  PSEUDAIR.96     
     &,TESTMELT(IMT,JMT) ! ARRAY FOR DECIDING IF MELTING IS HAPPENING.     PSEUDAIR.97     
     &,COALBEDO(5) ! COALBEDOS OF :  1  DRY SNOW                           PSEUDAIR.98     
     &             !                 2  MELTING SNOW                       PSEUDAIR.99     
     &             !                 3  DRY SNOW-FREE ICE                  PSEUDAIR.100    
     &             !                 4  MELTING ICE                        PSEUDAIR.101    
     &             !                 5  LEADS                              PSEUDAIR.102    
C                                                                          PSEUDAIR.103    
C DEFINE LOCAL PARAMETERS                                                  PSEUDAIR.104    
      INTEGER                                                              PSEUDAIR.105    
     & IMTM1 ! NUMBER OF POINTS IN A ROW MINUS 1.                          PSEUDAIR.106    
      REAL                                                                 PSEUDAIR.107    
     & HSNOWMIN ! MIN. DEPTH OF SNOW WHICH AFFECTS ALBEDO.                 PSEUDAIR.108    
     &,HANEY ! HANEY COEFFICIENT (IN W M-2 K-1).                           PSEUDAIR.109    
     &,RHANEY ! RECIPROCAL OF HANEY.                                       PSEUDAIR.110    
     &,CONDICE ! THERMAL CONDUCTIVITY OF ICE (IN W M-1 K-1).               PSEUDAIR.111    
     &,RCONDICE ! RECIPROCAL OF CONDICE.                                   PSEUDAIR.112    
     &,CONDSNO ! THERMAL CONDUCTIVITY OF SNOW (IN W M-1 K-1).              PSEUDAIR.113    
     &,RCONDSNO ! RECIPROCAL OF CONDSNO.                                   PSEUDAIR.114    
     &,CON1     ! RATIO OF TFREEZE AND HANEY.                              PSEUDAIR.115    
     &,ZERO     ! CONSTANT                                                 PSEUDAIR.116    
     &,ONE      ! CONSTANT                                                 PSEUDAIR.117    
     &,THIRTY   ! CONSTANT                                                 PSEUDAIR.118    
     &,SIXTYONE ! CONSTANT                                                 PSEUDAIR.119    
      INTEGER                                                              PSEUDAIR.120    
     & I,J      ! INDICES FOR DO LOOPS                                     ORH3F405.97     
C                                                                          PSEUDAIR.122    
C                                                                          PSEUDAIR.123    
C                                                                          PSEUDAIR.124    
C-----------------------------------------------------------------------   PSEUDAIR.125    
C-----------------------------------------------------------------------   PSEUDAIR.126    
C SET VARIOUS CONSTANTS AND ARRAYS                                         PSEUDAIR.127    
C                                                                          PSEUDAIR.128    
      DATA COALBEDO/0.2,0.35,0.3,0.5,0.94/                                 PSEUDAIR.129    
      DATA HSNOWMIN/0.01/                                                  PSEUDAIR.130    
C                                                                          PSEUDAIR.131    
C                                                                          PSEUDAIR.132    
      IMTM1=IMT - 1                                                        PSEUDAIR.133    
      ZERO = 0.0                                                           PSEUDAIR.134    
      ONE = 1.0                                                            PSEUDAIR.135    
      THIRTY = 30.0                                                        PSEUDAIR.136    
      SIXTYONE = 61.0                                                      PSEUDAIR.137    
      HANEY =1.E-5*RHOCP                                                   PSEUDAIR.138    
      RHANEY = ONE/HANEY                                                   PSEUDAIR.139    
      CONDICE = 2.166                                                      PSEUDAIR.140    
      RCONDICE = ONE/CONDICE                                               PSEUDAIR.141    
      CONDSNO = 0.3299                                                     PSEUDAIR.142    
      RCONDSNO = ONE/CONDSNO                                               PSEUDAIR.143    
      CON1 = TFREEZE*RHANEY                                                PSEUDAIR.144    
C                                                                          PSEUDAIR.145    
C                                                                          PSEUDAIR.146    
C     SET UP ARRAYS TO DISTINGUISH ICY BOXES WITH AND WITHOUT THE          PSEUDAIR.147    
C     MINIMUM SNOW COVER REQUIRED TO AFFECT SURFACE ALBEDO.                PSEUDAIR.148    
C                                                                          PSEUDAIR.149    
      DO 10 J=J_1,J_JMT                                                    ORH3F402.233    
      DO 10 I=1,IMT                                                        PSEUDAIR.151    
        LSNOW(I,J) = ICY(I,J).AND.(HSNOW(I,J).GE.HSNOWMIN)                 PSEUDAIR.152    
        LNOSNOW(I,J) = ICY(I,J).AND.                                       PSEUDAIR.153    
     &                         (HSNOW(I,J).LT.HSNOWMIN)                    PSEUDAIR.154    
C                                                                          PSEUDAIR.155    
C                                                                          PSEUDAIR.156    
  10  CONTINUE                                                             PSEUDAIR.157    
C                                                                          PSEUDAIR.158    
C                                                                          PSEUDAIR.159    
C                                                                          PSEUDAIR.160    
C     ----------------------------------------------------------------     PSEUDAIR.161    
C     BEGIN GRIDPOINT BY GRIDPOINT CALCULATION                             PSEUDAIR.162    
C     ----------------------------------------------------------------     PSEUDAIR.163    
C                                                                          PSEUDAIR.164    
      DO 100 J=J_1,J_JMT                                                   ORH3F402.234    
      DO 100 I=1,IMT                                                       PSEUDAIR.166    
C                                                                          PSEUDAIR.167    
C     ----------------------------------------------------------------     PSEUDAIR.168    
C     ----------------------------------------------------------------     PSEUDAIR.169    
C                                                                          PSEUDAIR.170    
C     SET DOWNWARD HEAT FLUXES OVER LEADS,USING PSEUDO-HANEY FORCING.      PSEUDAIR.171    
C     WEIGHT THEM BY THE FRACTIONAL LEAD AREA IN THE SAME WAY AS THE       PSEUDAIR.172    
C     ATMOSPHERIC MODEL WOULD DO.                                          PSEUDAIR.173    
C                                                                          PSEUDAIR.174    
      IF ( ICY(I,J) ) THEN                                                 PSEUDAIR.175    
        HEATFLUX(I,J) = HANEY*( TAIR(I,J) - TFREEZE ) * (ONE-AICE(I,J))    PSEUDAIR.176    
        SOLARFLX(I,J) = COALBEDO(5) * SOLICE(I,J) * (ONE-AICE(I,J))        PSEUDAIR.177    
        ATMSFLUX(I,J) = HEATFLUX(I,J) + SOLARFLX(I,J)                      PSEUDAIR.178    
      ELSE                                                                 PSEUDAIR.179    
        HEATFLUX(I,J) = ZERO                                               PSEUDAIR.180    
        SOLARFLX(I,J) = ZERO                                               PSEUDAIR.181    
        ATMSFLUX(I,J) = ZERO                                               PSEUDAIR.182    
      ENDIF                                                                PSEUDAIR.183    
C                                                                          PSEUDAIR.184    
C     FILL UP COALBEDO ARRAY ASSUMING NO SURFACE MELTING                   PSEUDAIR.185    
C                                                                          PSEUDAIR.186    
      IF (LNOSNOW(I,J)) THEN                                               PSEUDAIR.187    
        COALB(I,J) = COALBEDO(3)                                           PSEUDAIR.188    
      ELSEIF (LSNOW(I,J)) THEN                                             PSEUDAIR.189    
        COALB(I,J) = COALBEDO(1)                                           PSEUDAIR.190    
      ENDIF                                                                PSEUDAIR.191    
C                                                                          PSEUDAIR.192    
C     SET UP ARRAY TESTMELT TO BE +VE OR -VE ACCORDING TO WHETHER          PSEUDAIR.193    
C     SURFACE MELTING IS OCCURRING. NOTE THAT IT IS SET TO A               PSEUDAIR.194    
C     CONVENIENT NEGATIVE NUMBER (TFREEZE) AT ICE-FREE POINTS.             PSEUDAIR.195    
C                                                                          PSEUDAIR.196    
      IF (ICY(I,J)) THEN                                                   PSEUDAIR.197    
        RGAMMA(I,J) =HSNOW(I,J)*CONDICE*RCONDSNO + HICE(I,J)/AICE(I,J)     PSEUDAIR.198    
        RGAMMA(I,J) = RGAMMA(I,J)*RCONDICE                                 PSEUDAIR.199    
        GAMMA(I,J) = ONE/RGAMMA(I,J)                                       PSEUDAIR.200    
        TESTMELT(I,J) = SOLICE(I,J)*COALB(I,J)                             PSEUDAIR.201    
        TESTMELT(I,J) = TESTMELT(I,J) + TFREEZE*GAMMA(I,J)                 PSEUDAIR.202    
        TESTMELT(I,J) = TESTMELT(I,J) + HANEY*TAIR(I,J)                    PSEUDAIR.203    
      ELSE                                                                 PSEUDAIR.204    
        TESTMELT(I,J) = TFREEZE                                            PSEUDAIR.205    
      ENDIF                                                                PSEUDAIR.206    
C                                                                          PSEUDAIR.207    
      LMELT(I,J) = TESTMELT(I,J) .GE. ZERO                                 PSEUDAIR.208    
C                                                                          PSEUDAIR.209    
C     CHANGE COALBEDO VALUES AT POINTS WHERE THE SURFACE IS MELTING        PSEUDAIR.210    
C                                                                          PSEUDAIR.211    
      IF(LMELT(I,J).AND.LNOSNOW(I,J)) THEN                                 PSEUDAIR.212    
        COALB(I,J) = COALBEDO(4)                                           PSEUDAIR.213    
      ELSEIF(LMELT(I,J).AND.LSNOW(I,J)) THEN                               PSEUDAIR.214    
        COALB(I,J) = COALBEDO(2)                                           PSEUDAIR.215    
      ENDIF                                                                PSEUDAIR.216    
C                                                                          PSEUDAIR.217    
C     SET TOPMELT AND BOTMELT AT POINTS WHERE THE SURFACE IS FROZEN        PSEUDAIR.218    
C     THE ALBEDO IS UNCHANGED HERE SO WE CAN REUSE THE VALUES              PSEUDAIR.219    
C     IN TESTMELT.                                                         PSEUDAIR.220    
C                                                                          PSEUDAIR.221    
      IF( ICY(I,J).AND.(.NOT.LMELT(I,J)) ) THEN                            PSEUDAIR.222    
        TOPMELT(I,J) = ZERO                                                PSEUDAIR.223    
        BOTMELT(I,J) = TESTMELT(I,J)/(HANEY + GAMMA(I,J) )                 PSEUDAIR.224    
        BOTMELT(I,J) = (BOTMELT(I,J)-TFREEZE)*GAMMA(I,J)                   PSEUDAIR.225    
      ENDIF                                                                PSEUDAIR.226    
C                                                                          PSEUDAIR.227    
C     NOW DEAL WITH POINTS WHERE SURFACE IS MELTING.                       PSEUDAIR.228    
C                                                                          PSEUDAIR.229    
      IF(ICY(I,J).AND.LMELT(I,J)) THEN                                     PSEUDAIR.230    
        BOTMELT(I,J) = -TFREEZE*GAMMA(I,J)                                 PSEUDAIR.231    
        TOPMELT(I,J) = SOLICE(I,J)*COALB(I,J)                              PSEUDAIR.232    
        TOPMELT(I,J) = TOPMELT(I,J)+(HANEY * TAIR(I,J))                    PSEUDAIR.233    
        TOPMELT(I,J) = TOPMELT(I,J) - BOTMELT(I,J)                         PSEUDAIR.234    
      ENDIF                                                                PSEUDAIR.235    
C                                                                          PSEUDAIR.236    
C     WEIGHT TOPMELT AND BOTMELT BY THE AREA OF ICE, IN THE SAME           PSEUDAIR.237    
C     WAY AS THE ATMOSPHERIC MODEL WOULD DO.                               PSEUDAIR.238    
C                                                                          PSEUDAIR.239    
      IF ( ICY(I,J) ) THEN                                                 PSEUDAIR.240    
        TOPMELT(I,J) = TOPMELT(I,J)*AICE(I,J)                              PSEUDAIR.241    
        BOTMELT(I,J) = BOTMELT(I,J)*AICE(I,J)                              PSEUDAIR.242    
      ELSE                                                                 PSEUDAIR.243    
        TOPMELT(I,J) = ZERO                                                PSEUDAIR.244    
        BOTMELT(I,J) = ZERO                                                PSEUDAIR.245    
      ENDIF                                                                PSEUDAIR.246    
C                                                                          PSEUDAIR.247    
C     ----------------------------------------------------------------     PSEUDAIR.248    
C     END GRIDPOINT BY GRIDPOINT CALCULATION                               PSEUDAIR.249    
C     ----------------------------------------------------------------     PSEUDAIR.250    
C                                                                          PSEUDAIR.251    
  100 CONTINUE                                                             PSEUDAIR.252    
C                                                                          PSEUDAIR.253    
C     ----------------------------------------------------------------     PSEUDAIR.254    
C Multiply heatflux and solarflx by AICE in runs with ice                  OJC2F400.3      
C dynamics.                                                                OJC2F400.4      
      if (l_icesimple .or. l_icefreedr) then                               ODC1F405.386    
        do j=j_1,j_jmt                                                     ORH3F402.235    
          do i=1,imt                                                       OJC2F400.7      
            heatflux(i,j) = heatflux(i,j) * aice(i,j)                      OJC2F400.8      
          end do                                                           OJC2F400.9      
        end do                                                             OJC2F400.10     
      endif                                                                OJC2F400.11     
C     ----------------------------------------------------------------     PSEUDAIR.255    
C                                                                          PSEUDAIR.256    
      IF (L_OCYCLIC) THEN                                                  ORH1F305.4894   
C     ENSURE THAT THE FORCING DATASETS ARE CYCLIC.                         PSEUDAIR.259    
C                                                                          PSEUDAIR.260    
      DO 200 J = J_1,J_JMT                                                 ORH3F402.236    
      TOPMELT(1,J) = TOPMELT(IMTM1,J)                                      PSEUDAIR.262    
      TOPMELT(IMT,J) = TOPMELT(2,J)                                        PSEUDAIR.263    
      BOTMELT(1,J) = BOTMELT(IMTM1,J)                                      PSEUDAIR.264    
      BOTMELT(IMT,J) = BOTMELT(2,J)                                        PSEUDAIR.265    
      ATMSFLUX(1,J) = ATMSFLUX(IMTM1,J)                                    PSEUDAIR.268    
      ATMSFLUX(IMT,J) = ATMSFLUX(2,J)                                      PSEUDAIR.269    
 200  CONTINUE                                                             PSEUDAIR.270    
C                                                                          PSEUDAIR.271    
      ENDIF                                                                ORH1F305.4895   
C                                                                          PSEUDAIR.274    
      RETURN                                                               PSEUDAIR.275    
      END                                                                  PSEUDAIR.276    
*ENDIF                                                                     PSEUDAIR.277