New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 4726 for branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2014-07-23T18:27:21+02:00 (10 years ago)
Author:
mathiot
Message:

ISF branch: change name of 2 variables (icedep => risfdep and lmask => ssmask), cosmetic changes and add ldfslp key

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r4724 r4726  
    470470         IF( cp_cfg == "isomip" ) THEN  
    471471           !  
    472            icedep(:,:)=200.e0  
    473            micedep(:,:)=1  
     472           risfdep(:,:)=200.e0  
     473           misfdep(:,:)=1  
    474474           ij0 = 1 ; ij1 = 40  
    475475           DO jj = mj0(ij0), mj1(ij1)  
    476               icedep(:,jj)=700.0_wp-(gphit(:,jj)+80.0_wp)*125.0_wp  
     476              risfdep(:,jj)=700.0_wp-(gphit(:,jj)+80.0_wp)*125.0_wp  
    477477                END DO  
    478             WHERE( bathy(:,:) <= 0._wp )  icedep(:,:) = 0._wp  
     478            WHERE( bathy(:,:) <= 0._wp )  risfdep(:,:) = 0._wp  
    479479           !  
    480480         ELSEIF ( cp_cfg == "isomip2" ) THEN 
    481481         !  
    482             icedep(:,:)=0.e0 
    483             micedep(:,:)=1 
     482            risfdep(:,:)=0.e0 
     483            misfdep(:,:)=1 
    484484            ij0 = 1 ; ij1 = 40 
    485485            DO jj = mj0(ij0), mj1(ij1) 
    486                icedep(:,jj)=700.0_wp-(gphit(:,jj)+80.0_wp)*125.0_wp 
    487             END DO 
    488             WHERE( bathy(:,:) <= 0._wp )  icedep(:,:) = 0._wp 
     486               risfdep(:,jj)=700.0_wp-(gphit(:,jj)+80.0_wp)*125.0_wp 
     487            END DO 
     488            WHERE( bathy(:,:) <= 0._wp )  risfdep(:,:) = 0._wp 
    489489         END IF 
    490490         ! 
     
    531531            CALL iom_close( inum ) 
    532532            !   
    533             icedep(:,:)=0._wp          
    534             micedep(:,:)=1              
     533            risfdep(:,:)=0._wp          
     534            misfdep(:,:)=1              
    535535            IF ( nn_isf == 1 .OR. nn_isf == 4 ) THEN 
    536536               CALL iom_open ( 'isf_draft_meter.nc', inum )  
    537                CALL iom_get  ( inum, jpdom_data, 'isf_draft', icedep ) 
     537               CALL iom_get  ( inum, jpdom_data, 'isf_draft', risfdep ) 
    538538               CALL iom_close( inum ) 
    539                WHERE( bathy(:,:) <= 0._wp )  icedep(:,:) = 0._wp 
     539               WHERE( bathy(:,:) <= 0._wp )  risfdep(:,:) = 0._wp 
    540540            END IF 
    541541            !        
     
    836836      !! ** Purpose :   defines the vertical index of ocean top (mik. arrays) 
    837837      !! 
    838       !! ** Method  :   computes from micedep with a minimum value of 1 
     838      !! ** Method  :   computes from misfdep with a minimum value of 1 
    839839      !! 
    840840      !! ** Action  :   mikt, miku, mikv :   vertical indices of the shallowest  
     
    855855      IF(lwp) WRITE(numout,*) '    ~~~~~~~~~~~~~' 
    856856      ! 
    857       mikt(:,:) = MAX( micedep(:,:) , 1 )    ! top k-index of T-level (=1) 
     857      mikt(:,:) = MAX( misfdep(:,:) , 1 )    ! top k-index of T-level (=1) 
    858858      !                                      ! top k-index of W-level (=mikt) 
    859859      DO jj = 1, jpjm1                       ! top k-index of U- (U-) level 
     
    963963      REAL(wp) ::   zdiff            ! temporary scalar 
    964964      REAL(wp) ::   zrefdep          ! temporary scalar 
    965       REAL(wp) ::   eps=0.99            ! small offset to avoid large pool in case bathy slightly greater than icedep 
     965      REAL(wp) ::   eps=0.99            ! small offset to avoid large pool in case bathy slightly greater than risfdep 
    966966      REAL(wp), POINTER, DIMENSION(:,:)   ::   zbathy, zmask   ! 3D workspace (ISH) 
    967       INTEGER , POINTER, DIMENSION(:,:)   ::   zmbathy, zmicedep   ! 3D workspace (ISH) 
     967      INTEGER , POINTER, DIMENSION(:,:)   ::   zmbathy, zmisfdep   ! 3D workspace (ISH) 
    968968      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zprt 
    969969      !!--------------------------------------------------------------------- 
     
    973973      CALL wrk_alloc( jpi, jpj, jpk, zprt ) 
    974974      CALL wrk_alloc( jpi, jpj, zbathy, zmask) 
    975       CALL wrk_alloc( jpi, jpj, zmbathy, zmicedep) 
     975      CALL wrk_alloc( jpi, jpj, zmbathy, zmisfdep) 
    976976      ! 
    977977      IF(lwp) WRITE(numout,*) 
     
    10051005         WHERE( 0._wp < bathy(:,:) .AND. bathy(:,:) <= zdepth )   mbathy(:,:) = jk-1 
    10061006      END DO 
    1007       ! (ISF) compute micedep 
    1008       WHERE( icedep(:,:) == 0._wp ) ;   micedep(:,:) = 1   ! no ice shelf : set micedep to 1   
    1009       ELSEWHERE                     ;   micedep(:,:) = 2   ! iceshelf : initialize micedep to second level  
     1007      ! (ISF) compute misfdep 
     1008      WHERE( risfdep(:,:) == 0._wp ) ;   misfdep(:,:) = 1   ! no ice shelf : set misfdep to 1   
     1009      ELSEWHERE                     ;   misfdep(:,:) = 2   ! iceshelf : initialize misfdep to second level  
    10101010      END WHERE   
    10111011 
    1012       ! Compute micedep for ocean points (i.e. first wet level)  
     1012      ! Compute misfdep for ocean points (i.e. first wet level)  
    10131013      ! find the first ocean level such that the first level thickness  
    10141014      ! is larger than the bot_level of e3zps_min and e3zps_rat * e3t_0 (where  
     
    10161016      DO jk = 2, jpkm1  
    10171017         zdepth = gdepw_1d(jk+1) - MIN( e3zps_min, e3t_1d(jk)*e3zps_rat )  
    1018          WHERE( 0._wp < icedep(:,:) .AND. icedep(:,:) >= zdepth )   micedep(:,:) = jk+1  
     1018         WHERE( 0._wp < risfdep(:,:) .AND. risfdep(:,:) >= zdepth )   misfdep(:,:) = jk+1  
    10191019      END DO  
    1020       WHERE (icedep <= e3t_1d(1) .AND. icedep .GT. 0._wp) 
    1021          icedep = 0. 
    1022          micedep= 1 
     1020      WHERE (risfdep <= e3t_1d(1) .AND. risfdep .GT. 0._wp) 
     1021         risfdep = 0. 
     1022         misfdep= 1 
    10231023      END WHERE 
    1024      
    1025 ! basic check for the compatibility of bathy and icedep. I think it should be offline because it is not perfect and cannot solved all the situation 
     1024  
     1025! basic check for the compatibility of bathy and risfdep. I think it should be offline because it is not perfect and cannot solved all the situation 
    10261026      icompt = 0  
    10271027! run the bathy check 10 times to be sure all the modif in the bathy or iceshelf draft are compatible together 
    10281028      DO jl = 1, 10  
    1029         IF( lk_mpp ) THEN 
    1030            zbathy(:,:) = FLOAT( micedep(:,:) ) 
    1031            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1032            micedep(:,:) = INT( zbathy(:,:) ) 
    1033            CALL lbc_lnk( icedep, 'T', 1. ) 
    1034            CALL lbc_lnk( bathy, 'T', 1. ) 
    1035            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1036            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1037            mbathy(:,:) = INT( zbathy(:,:) ) 
    1038         ENDIF 
     1029         IF( lk_mpp ) THEN 
     1030            zbathy(:,:) = FLOAT( misfdep(:,:) ) 
     1031            CALL lbc_lnk( zbathy, 'T', 1. ) 
     1032            misfdep(:,:) = INT( zbathy(:,:) ) 
     1033            CALL lbc_lnk( risfdep, 'T', 1. ) 
     1034            CALL lbc_lnk( bathy, 'T', 1. ) 
     1035            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1036            CALL lbc_lnk( zbathy, 'T', 1. ) 
     1037            mbathy(:,:) = INT( zbathy(:,:) ) 
     1038         ENDIF 
    10391039         IF( nperio == 1 .OR. nperio  ==  4 .OR. nperio  ==  6 ) THEN  
    1040             micedep( 1 ,:) = micedep(jpim1,:)           ! local domain is cyclic east-west  
    1041             micedep(jpi,:) = micedep(  2  ,:)  
     1040            misfdep( 1 ,:) = misfdep(jpim1,:)           ! local domain is cyclic east-west  
     1041            misfdep(jpi,:) = misfdep(  2  ,:)  
    10421042         ENDIF 
    10431043 
     
    10481048 
    10491049         WHERE (mbathy == 0)  
    1050             icedep = 0._wp 
    1051             micedep= 0 
     1050            risfdep = 0._wp 
     1051            misfdep= 0 
    10521052            bathy  = 0._wp 
    10531053         ENDWHERE 
    10541054 
    1055          WHERE (bathy(:,:) < icedep(:,:)+eps) 
    1056             micedep(:,:) = 0  
    1057             icedep(:,:)  = 0._wp 
     1055         WHERE (bathy(:,:) < risfdep(:,:)+eps) 
     1056            misfdep(:,:) = 0  
     1057            risfdep(:,:)  = 0._wp 
    10581058            mbathy(:,:)  = 0 
    10591059            bathy(:,:)   = 0._wp 
    10601060         END WHERE 
    1061 ! Case where bathy and icedep compatible but not the level variable mbathy/micedep because of partial cell condition 
     1061! Case where bathy and risfdep compatible but not the level variable mbathy/misfdep because of partial cell condition 
    10621062         DO jj = 1, jpj 
    10631063            DO ji = 1, jpi 
    1064                IF (bathy(ji,jj) .GT. icedep(ji,jj) .AND. mbathy(ji,jj) .LT. micedep(ji,jj)) THEN 
     1064               IF (bathy(ji,jj) .GT. risfdep(ji,jj) .AND. mbathy(ji,jj) .LT. misfdep(ji,jj)) THEN 
    10651065                  bathy(ji,jj) = gdepw_1d(mbathy(ji,jj)+1) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj)+1)*e3zps_rat ) 
    10661066                  mbathy(ji,jj)= mbathy(ji,jj) + 1 
     
    10701070 
    10711071 
    1072          ! At least 2 levels for water thickness at T, U, and V point. 
    1073         zmicedep(:,:)=micedep(:,:) 
    1074         zmbathy (:,:)=mbathy (:,:) 
    1075  
     1072        ! At least 2 levels for water thickness at T, U, and V point. 
     1073         zmisfdep(:,:)=misfdep(:,:) 
     1074         zmbathy (:,:)=mbathy (:,:) 
     1075  
    10761076         DO jj = 2, jpjm1 
    10771077            DO ji = 2, jpim1 
    10781078               ! T point 
    1079                IF( zmicedep(ji,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
     1079               IF( zmisfdep(ji,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
    10801080                  mbathy(ji,jj) = zmbathy(ji,jj) + 1  
    10811081                  bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 
    10821082               ENDIF 
    10831083               ! V point 
    1084                IF( zmicedep(ji,jj+1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
     1084               IF( zmisfdep(ji,jj+1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
    10851085                  mbathy(ji,jj) = zmbathy(ji,jj) + 1  
    10861086                  bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 
    10871087               ENDIF 
    10881088               ! V point -1 
    1089                IF( zmicedep(ji,jj-1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
     1089               IF( zmisfdep(ji,jj-1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
    10901090                  mbathy(ji,jj) = zmbathy(ji,jj) + 1  
    10911091                  bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 
    10921092               ENDIF 
    10931093               ! U point 
    1094                IF( zmicedep(ji+1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
     1094               IF( zmisfdep(ji+1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
    10951095                  mbathy(ji,jj) = zmbathy(ji,jj) + 1  
    10961096                  bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 
    10971097               ENDIF 
    10981098               ! U point -1 
    1099                IF( zmicedep(ji-1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
     1099               IF( zmisfdep(ji-1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 
    11001100                  mbathy(ji,jj) = zmbathy(ji,jj) + 1  
    11011101                  bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 
    11021102               ENDIF 
    1103             ENDDO 
    1104          ENDDO 
    1105    IF( lk_mpp ) THEN  
    1106       zbathy(:,:) = FLOAT( micedep(:,:) )  
    1107       CALL lbc_lnk( zbathy, 'T', 1. )  
    1108       micedep(:,:) = INT( zbathy(:,:) )  
    1109       CALL lbc_lnk( icedep, 'T', 1. )  
    1110            CALL lbc_lnk( bathy, 'T', 1. ) 
    1111            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1112            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1113            mbathy(:,:) = INT( zbathy(:,:) ) 
    1114    ENDIF  
    1115  
    1116          ! if single ocean point put as land 
     1103            END DO 
     1104         END DO 
     1105         IF( lk_mpp ) THEN  
     1106            zbathy(:,:) = FLOAT( misfdep(:,:) )  
     1107            CALL lbc_lnk( zbathy, 'T', 1. )  
     1108            misfdep(:,:) = INT( zbathy(:,:) )  
     1109            CALL lbc_lnk( risfdep, 'T', 1. )  
     1110            CALL lbc_lnk( bathy, 'T', 1. ) 
     1111            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1112            CALL lbc_lnk( zbathy, 'T', 1. ) 
     1113            mbathy(:,:) = INT( zbathy(:,:) ) 
     1114         ENDIF  
     1115 
     1116        ! if single ocean point put as land 
    11171117         zmask=1 
    11181118         WHERE (mbathy .EQ. 0) zmask=0 
     
    11231123                  bathy(ji,jj)=0._wp 
    11241124                  mbathy(ji,jj)=0 
    1125                   icedep(ji,jj)=0._wp 
    1126                   micedep(ji,jj)=0 
     1125                  risfdep(ji,jj)=0._wp 
     1126                  misfdep(ji,jj)=0 
    11271127               END IF 
    11281128            END DO 
    11291129         END DO 
    1130    IF( lk_mpp ) THEN  
    1131       zbathy(:,:) = FLOAT( micedep(:,:) )  
    1132       CALL lbc_lnk( zbathy, 'T', 1. )  
    1133       micedep(:,:) = INT( zbathy(:,:) )  
    1134       CALL lbc_lnk( icedep, 'T', 1. )  
    1135            CALL lbc_lnk( bathy, 'T', 1. ) 
    1136            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1137            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1138            mbathy(:,:) = INT( zbathy(:,:) ) 
    1139    ENDIF  
    1140  
    1141          ! if single point on isf coast line 
    1142          DO jk = 1, jpk 
    1143          WHERE (micedep==0) micedep=jpk 
    1144          zmask=0 
    1145          WHERE (micedep .LE. jk) zmask=1 
    1146          DO jj = 2, jpjm1 
    1147             DO ji = 2, jpim1 
    1148                IF (micedep(ji,jj) .EQ. jk) THEN 
    1149                ibtest = zmask(ji-1,jj) + zmask(ji+1,jj) + zmask(ji,jj-1) + zmask(ji,jj+1) 
    1150                IF (ibtest .LE. 1) THEN 
    1151                      icedep(ji,jj)=gdepw_1d(jk+1) ; micedep(ji,jj)=jk+1 
    1152                      IF (micedep(ji,jj) .GT. mbathy(ji,jj)) micedep(ji,jj) = jpk 
    1153                 !     bathy(ji,jj)=0.  ; mbathy(ji,jj)=0 
    1154                   !END IF 
    1155                END IF 
    1156                END IF 
    1157             END DO 
    1158          END DO 
    1159          WHERE (micedep==jpk)  
    1160              micedep=0 ; icedep=0._wp ; mbathy=0 ; bathy=0._wp 
    1161          END WHERE 
    1162  
    1163    IF( lk_mpp ) THEN  
    1164       zbathy(:,:) = FLOAT( micedep(:,:) )  
    1165       CALL lbc_lnk( zbathy, 'T', 1. )  
    1166       micedep(:,:) = INT( zbathy(:,:) )  
    1167       CALL lbc_lnk( icedep, 'T', 1. )  
    1168            CALL lbc_lnk( bathy, 'T', 1. ) 
    1169            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1170            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1171            mbathy(:,:) = INT( zbathy(:,:) ) 
    1172    ENDIF  
    1173          END DO 
    1174  
    1175 ! fill hole in ice shelf 
    1176          WHERE (micedep==0) micedep=jpk 
    1177         zmicedep(:,:)=micedep(:,:) 
    1178         zmbathy (:,:)=mbathy (:,:) 
    1179          DO jj = 2, jpjm1 
    1180             DO ji = 2, jpim1 
    1181                   ibtest=MIN(zmicedep(ji-1,jj), zmicedep(ji+1,jj), zmicedep(ji,jj-1), zmicedep(ji,jj+1)) 
    1182                   IF( ibtest > zmicedep(ji,jj)) THEN 
    1183                      micedep(ji,jj) = ibtest 
    1184                      icedep(ji,jj)  = gdepw_1d(ibtest) 
    1185                   ENDIF 
    1186             ENDDO 
    1187          ENDDO 
    1188          WHERE (micedep==jpk)  
    1189              micedep=0 ; icedep=0. ; mbathy=0 ; bathy=0 
    1190          END WHERE 
    11911130         IF( lk_mpp ) THEN  
    1192             zbathy(:,:) = FLOAT( micedep(:,:) )  
     1131            zbathy(:,:) = FLOAT( misfdep(:,:) )  
    11931132            CALL lbc_lnk( zbathy, 'T', 1. )  
    1194             micedep(:,:) = INT( zbathy(:,:) )  
    1195             CALL lbc_lnk( icedep, 'T', 1. )  
     1133            misfdep(:,:) = INT( zbathy(:,:) )  
     1134            CALL lbc_lnk( risfdep, 'T', 1. )  
    11961135            CALL lbc_lnk( bathy, 'T', 1. ) 
    11971136            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    11981137            CALL lbc_lnk( zbathy, 'T', 1. ) 
    11991138            mbathy(:,:) = INT( zbathy(:,:) ) 
    1200         ENDIF  
     1139         END IF  
     1140 
     1141         ! if single point on isf coast line 
     1142         DO jk = 1, jpk 
     1143            WHERE (misfdep==0) misfdep=jpk 
     1144            zmask=0 
     1145            WHERE (misfdep .LE. jk) zmask=1 
     1146            DO jj = 2, jpjm1 
     1147               DO ji = 2, jpim1 
     1148                  IF (misfdep(ji,jj) .EQ. jk) THEN 
     1149                     ibtest = zmask(ji-1,jj) + zmask(ji+1,jj) + zmask(ji,jj-1) + zmask(ji,jj+1) 
     1150                     IF (ibtest .LE. 1) THEN 
     1151                        risfdep(ji,jj)=gdepw_1d(jk+1) ; misfdep(ji,jj)=jk+1 
     1152                        IF (misfdep(ji,jj) .GT. mbathy(ji,jj)) misfdep(ji,jj) = jpk 
     1153                     END IF 
     1154                  END IF 
     1155               END DO 
     1156            END DO 
     1157            WHERE (misfdep==jpk)  
     1158               misfdep=0 ; risfdep=0._wp ; mbathy=0 ; bathy=0._wp 
     1159            END WHERE 
     1160   
     1161            IF( lk_mpp ) THEN  
     1162               zbathy(:,:) = FLOAT( misfdep(:,:) )  
     1163               CALL lbc_lnk( zbathy, 'T', 1. )  
     1164               misfdep(:,:) = INT( zbathy(:,:) )  
     1165               CALL lbc_lnk( risfdep, 'T', 1. )  
     1166               CALL lbc_lnk( bathy, 'T', 1. ) 
     1167               zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1168               CALL lbc_lnk( zbathy, 'T', 1. ) 
     1169               mbathy(:,:) = INT( zbathy(:,:) ) 
     1170            ENDIF  
     1171         END DO 
     1172 
     1173! fill hole in ice shelf 
     1174         WHERE (misfdep==0) misfdep=jpk 
     1175         zmisfdep(:,:)=misfdep(:,:) 
     1176         zmbathy (:,:)=mbathy (:,:) 
     1177         DO jj = 2, jpjm1 
     1178            DO ji = 2, jpim1 
     1179               ibtest=MIN(zmisfdep(ji-1,jj), zmisfdep(ji+1,jj), zmisfdep(ji,jj-1), zmisfdep(ji,jj+1)) 
     1180               IF( ibtest > zmisfdep(ji,jj)) THEN 
     1181                  misfdep(ji,jj) = ibtest 
     1182                  risfdep(ji,jj)  = gdepw_1d(ibtest) 
     1183               ENDIF 
     1184            ENDDO 
     1185         ENDDO 
     1186         WHERE (misfdep==jpk)  
     1187            misfdep=0 ; risfdep=0. ; mbathy=0 ; bathy=0 
     1188         END WHERE 
     1189         IF( lk_mpp ) THEN  
     1190            zbathy(:,:) = FLOAT( misfdep(:,:) )  
     1191            CALL lbc_lnk( zbathy, 'T', 1. )  
     1192            misfdep(:,:) = INT( zbathy(:,:) )  
     1193            CALL lbc_lnk( risfdep, 'T', 1. )  
     1194            CALL lbc_lnk( bathy, 'T', 1. ) 
     1195            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1196            CALL lbc_lnk( zbathy, 'T', 1. ) 
     1197            mbathy(:,:) = INT( zbathy(:,:) ) 
     1198         ENDIF  
    12011199 
    12021200! fill hole in bathymetry 
    1203         zmicedep(:,:)=micedep(:,:) 
    1204         zmbathy (:,:)=mbathy (:,:) 
     1201         zmisfdep(:,:)=misfdep(:,:) 
     1202         zmbathy (:,:)=mbathy (:,:) 
    12051203         DO jj = 2, jpjm1 
    12061204            DO ji = 2, jpim1 
     
    12141212         END DO 
    12151213         IF( lk_mpp ) THEN  
    1216             zbathy(:,:) = FLOAT( micedep(:,:) )  
     1214            zbathy(:,:) = FLOAT( misfdep(:,:) )  
    12171215            CALL lbc_lnk( zbathy, 'T', 1. )  
    1218             micedep(:,:) = INT( zbathy(:,:) )  
    1219             CALL lbc_lnk( icedep, 'T', 1. )  
     1216            misfdep(:,:) = INT( zbathy(:,:) )  
     1217            CALL lbc_lnk( risfdep, 'T', 1. )  
    12201218            CALL lbc_lnk( bathy, 'T', 1. ) 
    12211219            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    12221220            CALL lbc_lnk( zbathy, 'T', 1. ) 
    12231221            mbathy(:,:) = INT( zbathy(:,:) ) 
    1224         ENDIF  
     1222         ENDIF  
    12251223        ! remove 1 cell pool of water stuck between ice shelf and bathymetry (need a 3D flood filling tools to do this properly) 
    1226         DO jk = 1, jpk 
    1227         WHERE (micedep==0) micedep=jpk 
    1228         zmicedep(:,:)=micedep(:,:) 
    1229         zmbathy (:,:)=mbathy (:,:) 
    1230         DO jj = 2, jpjm1 
    1231             DO ji = 2, jpim1 
    1232                IF( jk .GE. zmicedep(ji,jj) .AND. jk .LE. zmbathy(ji,jj) ) THEN 
    1233                IF( (jk > zmbathy(ji,jj+1) .OR. jk < zmicedep(ji,jj+1)) .AND. & 
    1234                  & (jk > zmbathy(ji,jj-1) .OR. jk < zmicedep(ji,jj-1)) .AND. & 
    1235                  & (jk > zmbathy(ji+1,jj) .OR. jk < zmicedep(ji+1,jj)) .AND. & 
    1236                  & (jk > zmbathy(ji-1,jj) .OR. jk < zmicedep(ji-1,jj))       ) THEN 
    1237                   mbathy(ji,jj) = 0 ; micedep(ji,jj) = jpk ; icedep(ji,jj) = 0._wp ; bathy(ji,jj) = 0._wp 
    1238                ENDIF 
    1239                ENDIF 
     1224         DO jk = 1, jpk 
     1225            WHERE (misfdep==0) misfdep=jpk 
     1226            zmisfdep(:,:)=misfdep(:,:) 
     1227            zmbathy (:,:)=mbathy (:,:) 
     1228            DO jj = 2, jpjm1 
     1229               DO ji = 2, jpim1 
     1230                  IF ( jk .GE. zmisfdep(ji,jj) .AND. jk .LE. zmbathy(ji,jj) ) THEN 
     1231                     IF ( (jk > zmbathy(ji,jj+1) .OR. jk < zmisfdep(ji,jj+1)) .AND. & 
     1232                        & (jk > zmbathy(ji,jj-1) .OR. jk < zmisfdep(ji,jj-1)) .AND. & 
     1233                        & (jk > zmbathy(ji+1,jj) .OR. jk < zmisfdep(ji+1,jj)) .AND. & 
     1234                        & (jk > zmbathy(ji-1,jj) .OR. jk < zmisfdep(ji-1,jj))       ) THEN 
     1235                        mbathy(ji,jj) = 0 ; misfdep(ji,jj) = jpk ; risfdep(ji,jj) = 0._wp ; bathy(ji,jj) = 0._wp 
     1236                     ENDIF 
     1237                  ENDIF 
     1238               ENDDO 
    12401239            ENDDO 
    1241         ENDDO 
    1242         WHERE (micedep==jpk) micedep=0  
    1243         IF( lk_mpp ) THEN  
    1244             zbathy(:,:) = FLOAT( micedep(:,:) )  
    1245             CALL lbc_lnk( zbathy, 'T', 1. )  
    1246             micedep(:,:) = INT( zbathy(:,:) )  
    1247             CALL lbc_lnk( icedep, 'T', 1. )  
    1248             CALL lbc_lnk( bathy, 'T', 1. ) 
    1249             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1250             CALL lbc_lnk( zbathy, 'T', 1. ) 
    1251             mbathy(:,:) = INT( zbathy(:,:) ) 
    1252         ENDIF  
    1253         ENDDO 
     1240            WHERE (misfdep==jpk) misfdep=0  
     1241            IF( lk_mpp ) THEN  
     1242               zbathy(:,:) = FLOAT( misfdep(:,:) )  
     1243               CALL lbc_lnk( zbathy, 'T', 1. )  
     1244               misfdep(:,:) = INT( zbathy(:,:) )  
     1245               CALL lbc_lnk( risfdep, 'T', 1. )  
     1246               CALL lbc_lnk( bathy, 'T', 1. ) 
     1247               zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1248               CALL lbc_lnk( zbathy, 'T', 1. ) 
     1249               mbathy(:,:) = INT( zbathy(:,:) ) 
     1250            ENDIF  
     1251         END DO 
    12541252      END DO  
    12551253 
    1256       WHERE (mbathy(:,:) < micedep(:,:)) 
    1257          micedep(:,:) = 0 
    1258          icedep(:,:)  = 0._wp 
     1254      WHERE (mbathy(:,:) < misfdep(:,:)) 
     1255         misfdep(:,:) = 0 
     1256         risfdep(:,:)  = 0._wp 
    12591257         mbathy(:,:)  = 0 
    12601258         bathy(:,:)   = 0._wp 
     
    13381336      DO jj = 1, jpj  
    13391337         DO ji = 1, jpi  
    1340             ik = micedep(ji,jj)  
     1338            ik = misfdep(ji,jj)  
    13411339            IF( ik > 1 ) THEN               ! ice shelf point only  
    1342                 IF( icedep(ji,jj) < gdepw_1d(ik) )  icedep(ji,jj)= gdepw_1d(ik)  
    1343                 gdepw_0(ji,jj,ik) = icedep(ji,jj)  
     1340                IF( risfdep(ji,jj) < gdepw_1d(ik) )  risfdep(ji,jj)= gdepw_1d(ik)  
     1341                gdepw_0(ji,jj,ik) = risfdep(ji,jj)  
    13441342!gm Bug?  check the gdepw_0  
    13451343                !       ... on ik  
     
    13581356! The next line isn't required and doesn't affect results - included for consistency with bathymetry code  
    13591357                gdept_0(ji,jj,ik-1) = gdept_1d(ik-1) 
    1360              ENDIF  
    1361           END DO  
    1362        END DO  
     1358            ENDIF  
     1359         END DO  
     1360      END DO  
    13631361      !  
    13641362      it = 0  
    13651363      DO jj = 1, jpj  
    13661364         DO ji = 1, jpi  
    1367             ik = micedep(ji,jj)  
     1365            ik = misfdep(ji,jj)  
    13681366            IF( ik > 1 ) THEN               ! ice shelf point only  
    13691367               e3tp (ji,jj) = e3t_0(ji,jj,ik  )  
     
    13741372                  it = it + 1  
    13751373                  WRITE(numout,*) ' it      = ', it, ' ik      = ', ik, ' (i,j) = ', ji, jj  
    1376                   WRITE(numout,*) ' icedep = ', icedep(ji,jj)  
     1374                  WRITE(numout,*) ' risfdep = ', risfdep(ji,jj)  
    13771375                  WRITE(numout,*) ' gdept = ', gdept_0(ji,jj,ik), ' gdepw = ', gdepw_0(ji,jj,ik+1), ' zdiff = ', zdiff  
    13781376                  WRITE(numout,*) ' e3tp  = ', e3tp(ji,jj), ' e3wp  = ', e3wp(ji,jj)  
     
    14521450      
    14531451      ! Compute gdep3w_0 (vertical sum of e3w) 
    1454       WHERE (micedep == 0) micedep = 1 
     1452      WHERE (misfdep == 0) misfdep = 1 
    14551453      DO jj = 1,jpj 
    14561454         DO ji = 1,jpi 
    14571455            gdep3w_0(ji,jj,1) = 0.5_wp * e3w_0(ji,jj,1) 
    1458             DO jk = 2, micedep(ji,jj) 
     1456            DO jk = 2, misfdep(ji,jj) 
    14591457               gdep3w_0(ji,jj,jk) = gdep3w_0(ji,jj,jk-1) + e3w_0(ji,jj,jk)  
    14601458            END DO 
    1461             IF (micedep(ji,jj) .GE. 2) gdep3w_0(ji,jj,micedep(ji,jj)) = icedep(ji,jj) + 0.5_wp * e3w_0(ji,jj,micedep(ji,jj)) 
    1462             DO jk = micedep(ji,jj) + 1, jpk 
     1459            IF (misfdep(ji,jj) .GE. 2) gdep3w_0(ji,jj,misfdep(ji,jj)) = risfdep(ji,jj) + 0.5_wp * e3w_0(ji,jj,misfdep(ji,jj)) 
     1460            DO jk = misfdep(ji,jj) + 1, jpk 
    14631461               gdep3w_0(ji,jj,jk) = gdep3w_0(ji,jj,jk-1) + e3w_0(ji,jj,jk)  
    14641462            END DO 
     
    14951493      CALL wrk_dealloc( jpi, jpj, jpk, zprt ) 
    14961494      CALL wrk_dealloc( jpi, jpj, zmask, zbathy ) 
    1497       CALL wrk_dealloc( jpi, jpj, zmicedep, zmbathy ) 
     1495      CALL wrk_dealloc( jpi, jpj, zmisfdep, zmbathy ) 
    14981496      ! 
    14991497      IF( nn_timing == 1 )  CALL timing_stop('zgr_zps') 
Note: See TracChangeset for help on using the changeset viewer.