Ignore:
Timestamp:
2015-11-29T20:28:41+01:00 (5 years ago)
Author:
mathiot
Message:

ISF: change related to reviewers comments

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5151_UKMO_ISF/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r5621 r5944  
    824824   END SUBROUTINE zgr_bot_level 
    825825 
    826       SUBROUTINE zgr_top_level 
    827       !!---------------------------------------------------------------------- 
    828       !!                    ***  ROUTINE zgr_bot_level  *** 
     826   SUBROUTINE zgr_top_level 
     827      !!---------------------------------------------------------------------- 
     828      !!                    ***  ROUTINE zgr_top_level  *** 
    829829      !! 
    830830      !! ** Purpose :   defines the vertical index of ocean top (mik. arrays) 
     
    11491149                  gdep3w_0(ji,jj,jk) = gdep3w_0(ji,jj,jk-1) + e3w_0(ji,jj,jk)  
    11501150               END DO 
    1151                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)) 
     1151               IF (misfdep(ji,jj) >= 2) gdep3w_0(ji,jj,misfdep(ji,jj)) = risfdep(ji,jj) + 0.5_wp * e3w_0(ji,jj,misfdep(ji,jj)) 
    11521152               DO jk = misfdep(ji,jj) + 1, jpk 
    11531153                  gdep3w_0(ji,jj,jk) = gdep3w_0(ji,jj,jk-1) + e3w_0(ji,jj,jk)  
     
    12121212      INTEGER  ::   ji, jj, jl, jk       ! dummy loop indices 
    12131213      INTEGER  ::   ik, it               ! temporary integers 
    1214       INTEGER  ::   icompt, ibtest, ibtestim1, ibtestip1, ibtestjm1, ibtestjp1   ! (ISF) 
     1214      INTEGER  ::   icompt, ibtest       ! (ISF) 
     1215      INTEGER  ::   ibtestim1, ibtestip1 ! (ISF) 
     1216      INTEGER  ::   ibtestjm1, ibtestjp1 ! (ISF) 
    12151217      REAL(wp) ::   zdepth           ! Ajusted ocean depth to avoid too small e3t 
    12161218      REAL(wp) ::   zmax             ! Maximum and minimum depth 
    1217       REAL(wp) ::   zbathydiff, zrisfdepdiff  ! isf temporary scalar 
     1219      REAL(wp) ::   zbathydiff       ! isf temporary scalar 
     1220      REAL(wp) ::   zrisfdepdiff     ! isf temporary scalar 
    12181221      REAL(wp) ::   ze3tp , ze3wp    ! Last ocean level thickness at T- and W-points 
    12191222      REAL(wp) ::   zdepwp           ! Ajusted ocean depth to avoid too small e3t 
     
    12301233 
    12311234      ! (ISF) compute misfdep 
    1232       WHERE( risfdep(:,:) == 0._wp .AND. bathy(:,:) .NE. 0) ;   misfdep(:,:) = 1   ! open water : set misfdep to 1   
    1233       ELSEWHERE                      ;                          misfdep(:,:) = 2   ! iceshelf : initialize misfdep to second level  
     1235      WHERE( risfdep(:,:) == 0._wp .AND. bathy(:,:) /= 0 ) ;   misfdep(:,:) = 1   ! open water : set misfdep to 1   
     1236      ELSEWHERE                      ;                         misfdep(:,:) = 2   ! iceshelf : initialize misfdep to second level  
    12341237      END WHERE   
    12351238 
     
    12421245         WHERE( 0._wp < risfdep(:,:) .AND. risfdep(:,:) >= zdepth )   misfdep(:,:) = jk+1  
    12431246      END DO  
    1244       WHERE (risfdep(:,:) <= e3t_1d(1) .AND. risfdep(:,:) .GT. 0._wp) 
     1247      WHERE ( 0._wp < risfdep(:,:) .AND. risfdep(:,:) <= e3t_1d(1) ) 
    12451248         risfdep(:,:) = 0. ; misfdep(:,:) = 1 
    12461249      END WHERE 
    12471250 
    12481251      ! remove very shallow ice shelf (less than ~ 10m if 75L) 
    1249       IF ( cp_cfg .NE. "isomip" ) THEN 
    1250          WHERE (misfdep(:,:) <= 10 .AND. misfdep(:,:) .GT. 1) 
    1251             misfdep = 0; risfdep = 0.0_wp; 
    1252             mbathy  = 0; bathy   = 0.0_wp; 
    1253          END WHERE 
    1254          WHERE (bathy(:,:) <= 30.0 .AND. gphit < -60) 
    1255             misfdep = 0; risfdep = 0.0_wp; 
    1256             mbathy  = 0; bathy   = 0.0_wp; 
    1257          END WHERE 
    1258       END IF 
     1252      WHERE (risfdep(:,:) <= 10._wp .AND. misfdep(:,:) > 1) 
     1253         misfdep = 0; risfdep = 0.0_wp; 
     1254         mbathy  = 0; bathy   = 0.0_wp; 
     1255      END WHERE 
     1256      WHERE (bathy(:,:) <= 30.0_wp .AND. gphit < -60._wp) 
     1257         misfdep = 0; risfdep = 0.0_wp; 
     1258         mbathy  = 0; bathy   = 0.0_wp; 
     1259      END WHERE 
    12591260  
    12601261! 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 
     
    12621263! run the bathy check 10 times to be sure all the modif in the bathy or iceshelf draft are compatible together 
    12631264      DO jl = 1, 10      
    1264          WHERE (bathy(:,:) .EQ. risfdep(:,:) ) 
     1265         WHERE (bathy(:,:) == risfdep(:,:) ) 
    12651266            misfdep(:,:) = 0 ; risfdep(:,:) = 0._wp 
    12661267            mbathy (:,:) = 0 ; bathy  (:,:) = 0._wp 
     
    12711272         ENDWHERE 
    12721273         IF( lk_mpp ) THEN 
    1273             zbathy(:,:) = FLOAT( misfdep(:,:) ) 
     1274            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    12741275            CALL lbc_lnk( zbathy, 'T', 1. ) 
    12751276            misfdep(:,:) = INT( zbathy(:,:) ) 
    1276             CALL lbc_lnk( risfdep, 'T', 1. ) 
    1277             CALL lbc_lnk( bathy, 'T', 1. ) 
    1278             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1277 
     1278            CALL lbc_lnk( risfdep,'T', 1. ) 
     1279            CALL lbc_lnk( bathy,  'T', 1. ) 
     1280 
     1281            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    12791282            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1280             mbathy(:,:) = INT( zbathy(:,:) ) 
     1283            mbathy(:,:)  = INT( zbathy(:,:) ) 
    12811284         ENDIF 
    12821285         IF( nperio == 1 .OR. nperio  ==  4 .OR. nperio  ==  6 ) THEN  
    1283             misfdep( 1 ,:) = misfdep(jpim1,:)           ! local domain is cyclic east-west  
     1286            misfdep( 1 ,:) = misfdep(jpim1,:)            ! local domain is cyclic east-west  
    12841287            misfdep(jpi,:) = misfdep(  2  ,:)  
    1285          ENDIF 
    1286  
    1287          IF( nperio == 1 .OR. nperio  ==  4 .OR. nperio  ==  6 ) THEN 
    1288             mbathy( 1 ,:) = mbathy(jpim1,:)             ! local domain is cyclic east-west 
    1289             mbathy(jpi,:) = mbathy(  2  ,:) 
     1288            mbathy( 1 ,:)  = mbathy(jpim1,:)             ! local domain is cyclic east-west 
     1289            mbathy(jpi,:)  = mbathy(  2  ,:) 
    12901290         ENDIF 
    12911291 
     
    13141314               ! find the minimum change option: 
    13151315               ! test bathy 
    1316                IF (risfdep(ji,jj) .GT. 1) THEN 
     1316               IF (risfdep(ji,jj) > 1) THEN 
    13171317               zbathydiff =ABS(bathy(ji,jj)   - (gdepw_1d(mbathy (ji,jj)+1) & 
    13181318                 &   + MIN( e3zps_min, e3t_1d(mbathy (ji,jj)+1)*e3zps_rat ))) 
     
    13201320                 &   - MIN( e3zps_min, e3t_1d(misfdep(ji,jj)-1)*e3zps_rat ))) 
    13211321  
    1322                   IF (bathy(ji,jj) .GT. risfdep(ji,jj) .AND. mbathy(ji,jj) .LT. misfdep(ji,jj)) THEN 
    1323                      IF (zbathydiff .LE. zrisfdepdiff) THEN 
     1322                  IF (bathy(ji,jj) > risfdep(ji,jj) .AND. mbathy(ji,jj) < misfdep(ji,jj)) THEN 
     1323                     IF (zbathydiff <= zrisfdepdiff) THEN 
    13241324                        bathy(ji,jj) = gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj)+1)*e3zps_rat ) 
    13251325                        mbathy(ji,jj)= mbathy(ji,jj) + 1 
     
    13381338               ! find the minimum change option: 
    13391339               ! test bathy 
    1340                IF( misfdep(ji,jj) == mbathy(ji,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 
     1340               IF( misfdep(ji,jj) == mbathy(ji,jj) .AND. mbathy(ji,jj) > 1) THEN 
    13411341                  zbathydiff  =ABS(bathy(ji,jj)  - (gdepw_1d(mbathy (ji,jj)+1)& 
    13421342                    & + MIN( e3zps_min,e3t_1d(mbathy (ji,jj)+1)*e3zps_rat ))) 
    13431343                  zrisfdepdiff=ABS(risfdep(ji,jj) - (gdepw_1d(misfdep(ji,jj)  )  & 
    13441344                    & - MIN( e3zps_min,e3t_1d(misfdep(ji,jj)-1)*e3zps_rat ))) 
    1345                   IF (zbathydiff .LE. zrisfdepdiff) THEN 
     1345                  IF (zbathydiff <= zrisfdepdiff) THEN 
    13461346                     mbathy(ji,jj) = mbathy(ji,jj) + 1 
    13471347                     bathy(ji,jj)  = gdepw_1d(mbathy (ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj) +1)*e3zps_rat ) 
     
    13541354         END DO 
    13551355  
    1356  ! point V mbathy(ji,jj) EQ misfdep(ji,jj+1)  
     1356 ! point V mbathy(ji,jj) == misfdep(ji,jj+1)  
    13571357         DO jj = 1, jpjm1 
    13581358            DO ji = 1, jpim1 
    1359                IF( misfdep(ji,jj+1) == mbathy(ji,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 
     1359               IF( misfdep(ji,jj+1) == mbathy(ji,jj) .AND. mbathy(ji,jj) > 1) THEN 
    13601360                  zbathydiff =ABS(bathy(ji,jj    ) - (gdepw_1d(mbathy (ji,jj)+1)   & 
    13611361                    &   + MIN( e3zps_min, e3t_1d(mbathy (ji,jj  )+1)*e3zps_rat ))) 
    13621362                  zrisfdepdiff=ABS(risfdep(ji,jj+1) - (gdepw_1d(misfdep(ji,jj+1))  & 
    13631363                    &  - MIN( e3zps_min, e3t_1d(misfdep(ji,jj+1)-1)*e3zps_rat ))) 
    1364                   IF (zbathydiff .LE. zrisfdepdiff) THEN 
     1364                  IF (zbathydiff <= zrisfdepdiff) THEN 
    13651365                     mbathy(ji,jj) = mbathy(ji,jj) + 1 
    13661366                     bathy(ji,jj)  = gdepw_1d(mbathy (ji,jj  )) & 
     
    13761376  
    13771377         IF( lk_mpp ) THEN 
    1378             zbathy(:,:) = FLOAT( misfdep(:,:) ) 
     1378            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    13791379            CALL lbc_lnk( zbathy, 'T', 1. ) 
    13801380            misfdep(:,:) = INT( zbathy(:,:) ) 
    1381             CALL lbc_lnk( risfdep, 'T', 1. ) 
    1382             CALL lbc_lnk( bathy, 'T', 1. ) 
    1383             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1381 
     1382            CALL lbc_lnk( risfdep,'T', 1. ) 
     1383            CALL lbc_lnk( bathy,  'T', 1. ) 
     1384 
     1385            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    13841386            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1385             mbathy(:,:) = INT( zbathy(:,:) ) 
     1387            mbathy(:,:)  = INT( zbathy(:,:) ) 
    13861388         ENDIF 
    1387  ! point V misdep(ji,jj) EQ mbathy(ji,jj+1)  
     1389 ! point V misdep(ji,jj) == mbathy(ji,jj+1)  
    13881390         DO jj = 1, jpjm1 
    13891391            DO ji = 1, jpim1 
    1390                IF( misfdep(ji,jj) == mbathy(ji,jj+1) .AND. mbathy(ji,jj) .GT. 1) THEN 
     1392               IF( misfdep(ji,jj) == mbathy(ji,jj+1) .AND. mbathy(ji,jj) > 1) THEN 
    13911393                  zbathydiff =ABS(  bathy(ji,jj+1) - (gdepw_1d(mbathy (ji,jj+1)+1) & 
    13921394                   &   + MIN( e3zps_min, e3t_1d(mbathy (ji,jj+1)+1)*e3zps_rat ))) 
    13931395                  zrisfdepdiff=ABS(risfdep(ji,jj  ) - (gdepw_1d(misfdep(ji,jj  )  )  & 
    13941396                   &   - MIN( e3zps_min, e3t_1d(misfdep(ji,jj  )-1)*e3zps_rat ))) 
    1395                   IF (zbathydiff .LE. zrisfdepdiff) THEN 
     1397                  IF (zbathydiff <= zrisfdepdiff) THEN 
    13961398                     mbathy (ji,jj+1) = mbathy(ji,jj+1) + 1 
    13971399                     bathy  (ji,jj+1) = gdepw_1d(mbathy (ji,jj+1)  ) + MIN( e3zps_min, e3t_1d(mbathy (ji,jj+1)+1)*e3zps_rat ) 
     
    14061408  
    14071409         IF( lk_mpp ) THEN  
    1408             zbathy(:,:) = FLOAT( misfdep(:,:) )  
    1409             CALL lbc_lnk( zbathy, 'T', 1. )  
    1410             misfdep(:,:) = INT( zbathy(:,:) )  
    1411             CALL lbc_lnk( risfdep, 'T', 1. )  
    1412             CALL lbc_lnk( bathy, 'T', 1. ) 
    1413             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1410            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    14141411            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1415             mbathy(:,:) = INT( zbathy(:,:) ) 
     1412            misfdep(:,:) = INT( zbathy(:,:) ) 
     1413 
     1414            CALL lbc_lnk( risfdep,'T', 1. ) 
     1415            CALL lbc_lnk( bathy,  'T', 1. ) 
     1416 
     1417            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
     1418            CALL lbc_lnk( zbathy, 'T', 1. ) 
     1419            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14161420         ENDIF  
    14171421  
    1418  ! point U mbathy(ji,jj) EQ misfdep(ji,jj+1)  
     1422 ! point U mbathy(ji,jj) == misfdep(ji,jj+1)  
    14191423         DO jj = 1, jpjm1 
    14201424            DO ji = 1, jpim1 
    1421                IF( misfdep(ji+1,jj) == mbathy(ji,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 
     1425               IF( misfdep(ji+1,jj) == mbathy(ji,jj) .AND. mbathy(ji,jj) > 1) THEN 
    14221426                  zbathydiff =ABS(  bathy(ji  ,jj) - (gdepw_1d(mbathy (ji,jj)+1) & 
    14231427                    &   + MIN( e3zps_min, e3t_1d(mbathy (ji  ,jj)+1)*e3zps_rat ))) 
    14241428                  zrisfdepdiff=ABS(risfdep(ji+1,jj) - (gdepw_1d(misfdep(ji+1,jj)) & 
    14251429                    &  - MIN( e3zps_min, e3t_1d(misfdep(ji+1,jj)-1)*e3zps_rat ))) 
    1426                   IF (zbathydiff .LE. zrisfdepdiff) THEN 
     1430                  IF (zbathydiff <= zrisfdepdiff) THEN 
    14271431                     mbathy(ji,jj) = mbathy(ji,jj) + 1 
    14281432                     bathy(ji,jj)  = gdepw_1d(mbathy (ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj) +1)*e3zps_rat ) 
     
    14361440  
    14371441         IF( lk_mpp ) THEN  
    1438             zbathy(:,:) = FLOAT( misfdep(:,:) )  
    1439             CALL lbc_lnk( zbathy, 'T', 1. )  
    1440             misfdep(:,:) = INT( zbathy(:,:) )  
    1441             CALL lbc_lnk( risfdep, 'T', 1. )  
    1442             CALL lbc_lnk( bathy, 'T', 1. ) 
    1443             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1442            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    14441443            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1445             mbathy(:,:) = INT( zbathy(:,:) ) 
     1444            misfdep(:,:) = INT( zbathy(:,:) ) 
     1445 
     1446            CALL lbc_lnk( risfdep,'T', 1. ) 
     1447            CALL lbc_lnk( bathy,  'T', 1. ) 
     1448 
     1449            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
     1450            CALL lbc_lnk( zbathy, 'T', 1. ) 
     1451            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14461452         ENDIF  
    14471453  
    1448  ! point U misfdep(ji,jj) EQ bathy(ji,jj+1)  
     1454 ! point U misfdep(ji,jj) == bathy(ji,jj+1)  
    14491455         DO jj = 1, jpjm1 
    14501456            DO ji = 1, jpim1 
    1451                IF( misfdep(ji,jj) == mbathy(ji+1,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 
     1457               IF( misfdep(ji,jj) == mbathy(ji+1,jj) .AND. mbathy(ji,jj) > 1) THEN 
    14521458                  zbathydiff =ABS(  bathy(ji+1,jj) - (gdepw_1d(mbathy (ji+1,jj)+1) & 
    14531459                      &   + MIN( e3zps_min, e3t_1d(mbathy (ji+1,jj)+1)*e3zps_rat ))) 
    14541460                  zrisfdepdiff=ABS(risfdep(ji  ,jj) - (gdepw_1d(misfdep(ji  ,jj)  )  & 
    14551461                      &  - MIN( e3zps_min, e3t_1d(misfdep(ji  ,jj)-1)*e3zps_rat ))) 
    1456                   IF (zbathydiff .LE. zrisfdepdiff) THEN 
     1462                  IF (zbathydiff <= zrisfdepdiff) THEN 
    14571463                     mbathy(ji+1,jj)  = mbathy (ji+1,jj) + 1 
    14581464                     bathy (ji+1,jj)  = gdepw_1d(mbathy (ji+1,jj)  )  & 
     
    14681474  
    14691475         IF( lk_mpp ) THEN 
    1470             zbathy(:,:) = FLOAT( misfdep(:,:) ) 
     1476            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    14711477            CALL lbc_lnk( zbathy, 'T', 1. ) 
    14721478            misfdep(:,:) = INT( zbathy(:,:) ) 
    1473             CALL lbc_lnk( risfdep, 'T', 1. ) 
    1474             CALL lbc_lnk( bathy, 'T', 1. ) 
    1475             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1479 
     1480            CALL lbc_lnk( risfdep,'T', 1. ) 
     1481            CALL lbc_lnk( bathy,  'T', 1. ) 
     1482 
     1483            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    14761484            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1477             mbathy(:,:) = INT( zbathy(:,:) ) 
     1485            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14781486         ENDIF 
    14791487      END DO 
     
    14851493         DO jk = 2, jpk 
    14861494            WHERE (misfdep==0) misfdep=jpk 
    1487             zmask=0 
    1488             WHERE (misfdep .LE. jk) zmask=1 
     1495            zmask=0._wp 
     1496            WHERE (misfdep <= jk) zmask=1 
    14891497            DO jj = 2, jpjm1 
    14901498               DO ji = 2, jpim1 
    1491                   IF (misfdep(ji,jj) .EQ. jk) THEN 
     1499                  IF (misfdep(ji,jj) == jk) THEN 
    14921500                     ibtest = zmask(ji-1,jj) + zmask(ji+1,jj) + zmask(ji,jj-1) + zmask(ji,jj+1) 
    1493                      IF (ibtest .LE. 1) THEN 
     1501                     IF (ibtest <= 1) THEN 
    14941502                        risfdep(ji,jj)=gdepw_1d(jk+1) ; misfdep(ji,jj)=jk+1 
    1495                         IF (misfdep(ji,jj) .GT. mbathy(ji,jj)) misfdep(ji,jj) = jpk 
     1503                        IF (misfdep(ji,jj) > mbathy(ji,jj)) misfdep(ji,jj) = jpk 
    14961504                     END IF 
    14971505                  END IF 
     
    15001508         END DO 
    15011509         WHERE (misfdep==jpk) 
    1502              misfdep=0 ; risfdep=0. ; mbathy=0 ; bathy=0. 
     1510             misfdep=0 ; risfdep=0._wp ; mbathy=0 ; bathy=0._wp 
    15031511         END WHERE 
    15041512         IF( lk_mpp ) THEN 
    1505             zbathy(:,:) = FLOAT( misfdep(:,:) ) 
     1513            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    15061514            CALL lbc_lnk( zbathy, 'T', 1. ) 
    15071515            misfdep(:,:) = INT( zbathy(:,:) ) 
    1508             CALL lbc_lnk( risfdep, 'T', 1. ) 
    1509             CALL lbc_lnk( bathy, 'T', 1. ) 
    1510             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1516 
     1517            CALL lbc_lnk( risfdep,'T', 1. ) 
     1518            CALL lbc_lnk( bathy,  'T', 1. ) 
     1519 
     1520            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    15111521            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1512             mbathy(:,:) = INT( zbathy(:,:) ) 
     1522            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15131523         ENDIF 
    15141524  
    15151525 ! remove single point "bay" on bathy coast line beneath an ice shelf' 
    15161526         DO jk = jpk,1,-1 
    1517             zmask=0 
    1518             WHERE (mbathy .GE. jk ) zmask=1 
     1527            zmask=0._wp 
     1528            WHERE (mbathy >= jk ) zmask=1 
    15191529            DO jj = 2, jpjm1 
    15201530               DO ji = 2, jpim1 
    1521                   IF (mbathy(ji,jj) .EQ. jk .AND. misfdep(ji,jj) .GE. 2) THEN 
     1531                  IF (mbathy(ji,jj) == jk .AND. misfdep(ji,jj) >= 2) THEN 
    15221532                     ibtest = zmask(ji-1,jj) + zmask(ji+1,jj) + zmask(ji,jj-1) + zmask(ji,jj+1) 
    1523                      IF (ibtest .LE. 1) THEN 
     1533                     IF (ibtest <= 1) THEN 
    15241534                        bathy(ji,jj)=gdepw_1d(jk) ; mbathy(ji,jj)=jk-1 
    1525                         IF (misfdep(ji,jj) .GT. mbathy(ji,jj)) mbathy(ji,jj) = 0 
     1535                        IF (misfdep(ji,jj) > mbathy(ji,jj)) mbathy(ji,jj) = 0 
    15261536                     END IF 
    15271537                  END IF 
     
    15301540         END DO 
    15311541         WHERE (mbathy==0) 
    1532              misfdep=0 ; risfdep=0. ; mbathy=0 ; bathy=0. 
     1542             misfdep=0 ; risfdep=0._wp ; mbathy=0 ; bathy=0._wp 
    15331543         END WHERE 
    15341544         IF( lk_mpp ) THEN 
    1535             zbathy(:,:) = FLOAT( misfdep(:,:) ) 
     1545            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    15361546            CALL lbc_lnk( zbathy, 'T', 1. ) 
    15371547            misfdep(:,:) = INT( zbathy(:,:) ) 
    1538             CALL lbc_lnk( risfdep, 'T', 1. ) 
    1539             CALL lbc_lnk( bathy, 'T', 1. ) 
    1540             zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     1548 
     1549            CALL lbc_lnk( risfdep,'T', 1. ) 
     1550            CALL lbc_lnk( bathy,  'T', 1. ) 
     1551 
     1552            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    15411553            CALL lbc_lnk( zbathy, 'T', 1. ) 
    1542             mbathy(:,:) = INT( zbathy(:,:) ) 
     1554            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15431555         ENDIF 
    15441556  
     
    15461558         zmisfdep = misfdep 
    15471559         zrisfdep = risfdep 
    1548          WHERE (zmisfdep .LE. 1) zmisfdep=jpk 
     1560         WHERE (zmisfdep <= 1._wp) zmisfdep=jpk 
    15491561         DO jj = 2, jpjm1 
    15501562            DO ji = 2, jpim1 
    15511563               ibtestim1 = zmisfdep(ji-1,jj  ) ; ibtestip1 = zmisfdep(ji+1,jj  ) 
    15521564               ibtestjm1 = zmisfdep(ji  ,jj-1) ; ibtestjp1 = zmisfdep(ji  ,jj+1) 
    1553                IF( zmisfdep(ji,jj) .GE. mbathy(ji-1,jj  ) ) ibtestim1 = jpk!MAX(0, mbathy(ji-1,jj  ) - 1) 
    1554                IF( zmisfdep(ji,jj) .GE. mbathy(ji+1,jj  ) ) ibtestip1 = jpk!MAX(0, mbathy(ji+1,jj  ) - 1) 
    1555                IF( zmisfdep(ji,jj) .GE. mbathy(ji  ,jj-1) ) ibtestjm1 = jpk!MAX(0, mbathy(ji  ,jj-1) - 1) 
    1556                IF( zmisfdep(ji,jj) .GE. mbathy(ji  ,jj+1) ) ibtestjp1 = jpk!MAX(0, mbathy(ji  ,jj+1) - 1) 
     1565               IF( zmisfdep(ji,jj) >= mbathy(ji-1,jj  ) ) ibtestim1 = jpk!MAX(0, mbathy(ji-1,jj  ) - 1) 
     1566               IF( zmisfdep(ji,jj) >= mbathy(ji+1,jj  ) ) ibtestip1 = jpk!MAX(0, mbathy(ji+1,jj  ) - 1) 
     1567               IF( zmisfdep(ji,jj) >= mbathy(ji  ,jj-1) ) ibtestjm1 = jpk!MAX(0, mbathy(ji  ,jj-1) - 1) 
     1568               IF( zmisfdep(ji,jj) >= mbathy(ji  ,jj+1) ) ibtestjp1 = jpk!MAX(0, mbathy(ji  ,jj+1) - 1) 
    15571569               ibtest=MIN(ibtestim1, ibtestip1, ibtestjm1, ibtestjp1) 
    1558                IF( ibtest == jpk .AND. misfdep(ji,jj) .GE. 2) THEN 
     1570               IF( ibtest == jpk .AND. misfdep(ji,jj) >= 2) THEN 
    15591571                  mbathy(ji,jj) = 0 ; bathy(ji,jj) = 0.0_wp ; misfdep(ji,jj) = 0 ; risfdep(ji,jj) = 0.0_wp 
    15601572               END IF 
    1561                IF( zmisfdep(ji,jj) < ibtest .AND. misfdep(ji,jj) .GE. 2) THEN 
     1573               IF( zmisfdep(ji,jj) < ibtest .AND. misfdep(ji,jj) >= 2) THEN 
    15621574                  misfdep(ji,jj) = ibtest 
    15631575                  risfdep(ji,jj) = gdepw_1d(ibtest) 
     
    15671579  
    15681580         IF( lk_mpp ) THEN  
    1569             zbathy(:,:) = FLOAT( misfdep(:,:) )  
    1570             CALL lbc_lnk( zbathy, 'T', 1. )  
     1581            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
     1582            CALL lbc_lnk( zbathy,  'T', 1. )  
    15711583            misfdep(:,:) = INT( zbathy(:,:) )  
     1584 
    15721585            CALL lbc_lnk( risfdep, 'T', 1. )  
    1573             CALL lbc_lnk( bathy, 'T', 1. ) 
     1586            CALL lbc_lnk( bathy,   'T', 1. ) 
     1587 
    15741588            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1575             CALL lbc_lnk( zbathy, 'T', 1. ) 
     1589            CALL lbc_lnk( zbathy,  'T', 1. ) 
    15761590            mbathy(:,:) = INT( zbathy(:,:) ) 
    15771591         ENDIF  
     
    15831597               ibtestim1 = zmbathy(ji-1,jj  ) ; ibtestip1 = zmbathy(ji+1,jj  ) 
    15841598               ibtestjm1 = zmbathy(ji  ,jj-1) ; ibtestjp1 = zmbathy(ji  ,jj+1) 
    1585                IF( zmbathy(ji,jj) .LT. misfdep(ji-1,jj  ) ) ibtestim1 = 0!MIN(jpk-1, misfdep(ji-1,jj  ) + 1) 
    1586                IF( zmbathy(ji,jj) .LT. misfdep(ji+1,jj  ) ) ibtestip1 = 0 
    1587                IF( zmbathy(ji,jj) .LT. misfdep(ji  ,jj-1) ) ibtestjm1 = 0 
    1588                IF( zmbathy(ji,jj) .LT. misfdep(ji  ,jj+1) ) ibtestjp1 = 0 
     1599               IF( zmbathy(ji,jj) < misfdep(ji-1,jj  ) ) ibtestim1 = 0!MIN(jpk-1, misfdep(ji-1,jj  ) + 1) 
     1600               IF( zmbathy(ji,jj) < misfdep(ji+1,jj  ) ) ibtestip1 = 0 
     1601               IF( zmbathy(ji,jj) < misfdep(ji  ,jj-1) ) ibtestjm1 = 0 
     1602               IF( zmbathy(ji,jj) < misfdep(ji  ,jj+1) ) ibtestjp1 = 0 
    15891603               ibtest=MAX(ibtestim1, ibtestip1, ibtestjm1, ibtestjp1) 
    1590                IF( ibtest == 0 .AND. misfdep(ji,jj) .GE. 2) THEN 
     1604               IF( ibtest == 0 .AND. misfdep(ji,jj) >= 2) THEN 
    15911605                  mbathy(ji,jj) = 0 ; bathy(ji,jj) = 0.0_wp ; misfdep(ji,jj) = 0 ; risfdep(ji,jj) = 0.0_wp ; 
    15921606               END IF 
    1593                IF( ibtest < zmbathy(ji,jj) .AND. misfdep(ji,jj) .GE. 2) THEN 
     1607               IF( ibtest < zmbathy(ji,jj) .AND. misfdep(ji,jj) >= 2) THEN 
    15941608                  mbathy(ji,jj) = ibtest 
    15951609                  bathy(ji,jj)  = gdepw_1d(ibtest+1)  
     
    15981612         END DO 
    15991613         IF( lk_mpp ) THEN  
    1600             zbathy(:,:) = FLOAT( misfdep(:,:) )  
    1601             CALL lbc_lnk( zbathy, 'T', 1. )  
     1614            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
     1615            CALL lbc_lnk( zbathy,  'T', 1. )  
    16021616            misfdep(:,:) = INT( zbathy(:,:) )  
     1617 
    16031618            CALL lbc_lnk( risfdep, 'T', 1. )  
    1604             CALL lbc_lnk( bathy, 'T', 1. ) 
     1619            CALL lbc_lnk( bathy,   'T', 1. ) 
     1620 
    16051621            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1606             CALL lbc_lnk( zbathy, 'T', 1. ) 
     1622            CALL lbc_lnk( zbathy,  'T', 1. ) 
    16071623            mbathy(:,:) = INT( zbathy(:,:) ) 
    16081624         ENDIF  
     
    16101626         DO jj = 1, jpjm1 
    16111627            DO ji = 1, jpim1 
    1612                IF (mbathy(ji,jj) == misfdep(ji+1,jj) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji+1,jj) .GE. 1) THEN 
     1628               IF (mbathy(ji,jj) == misfdep(ji+1,jj) .AND. mbathy(ji,jj) >= 1 .AND. mbathy(ji+1,jj) >= 1) THEN 
    16131629                  mbathy(ji,jj)  = mbathy(ji,jj) - 1 ; bathy(ji,jj)   = gdepw_1d(mbathy(ji,jj)+1) ; 
    16141630               END IF 
     
    16161632         END DO 
    16171633         IF( lk_mpp ) THEN  
    1618             zbathy(:,:) = FLOAT( misfdep(:,:) )  
    1619             CALL lbc_lnk( zbathy, 'T', 1. )  
     1634            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
     1635            CALL lbc_lnk( zbathy,  'T', 1. )  
    16201636            misfdep(:,:) = INT( zbathy(:,:) )  
     1637 
    16211638            CALL lbc_lnk( risfdep, 'T', 1. )  
    1622             CALL lbc_lnk( bathy, 'T', 1. ) 
     1639            CALL lbc_lnk( bathy,   'T', 1. ) 
     1640 
    16231641            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1624             CALL lbc_lnk( zbathy, 'T', 1. ) 
     1642            CALL lbc_lnk( zbathy,  'T', 1. ) 
    16251643            mbathy(:,:) = INT( zbathy(:,:) ) 
    16261644         ENDIF  
     
    16281646         DO jj = 1, jpjm1 
    16291647            DO ji = 1, jpim1 
    1630                IF (misfdep(ji,jj) == mbathy(ji+1,jj) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji+1,jj) .GE. 1) THEN 
     1648               IF (misfdep(ji,jj) == mbathy(ji+1,jj) .AND. mbathy(ji,jj) >= 1 .AND. mbathy(ji+1,jj) >= 1) THEN 
    16311649                  mbathy(ji+1,jj)  = mbathy(ji+1,jj) - 1;   bathy(ji+1,jj)   = gdepw_1d(mbathy(ji+1,jj)+1) ; 
    16321650               END IF 
     
    16341652         END DO 
    16351653         IF( lk_mpp ) THEN  
    1636             zbathy(:,:) = FLOAT( misfdep(:,:) )  
     1654            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    16371655            CALL lbc_lnk( zbathy, 'T', 1. )  
    16381656            misfdep(:,:) = INT( zbathy(:,:) )  
    1639             CALL lbc_lnk( risfdep, 'T', 1. )  
    1640             CALL lbc_lnk( bathy, 'T', 1. ) 
     1657 
     1658            CALL lbc_lnk( risfdep,'T', 1. )  
     1659            CALL lbc_lnk( bathy,  'T', 1. ) 
     1660 
    16411661            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    16421662            CALL lbc_lnk( zbathy, 'T', 1. ) 
     
    16461666         DO jj = 1, jpjm1 
    16471667            DO ji = 1, jpi 
    1648                IF (mbathy(ji,jj) == misfdep(ji,jj+1) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji,jj+1) .GE. 1) THEN 
     1668               IF (mbathy(ji,jj) == misfdep(ji,jj+1) .AND. mbathy(ji,jj) >= 1 .AND. mbathy(ji,jj+1) >= 1) THEN 
    16491669                  mbathy(ji,jj)  = mbathy(ji,jj) - 1 ; bathy(ji,jj)   = gdepw_1d(mbathy(ji,jj)+1) ; 
    16501670               END IF 
     
    16521672         END DO 
    16531673         IF( lk_mpp ) THEN  
    1654             zbathy(:,:) = FLOAT( misfdep(:,:) )  
     1674            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    16551675            CALL lbc_lnk( zbathy, 'T', 1. )  
    16561676            misfdep(:,:) = INT( zbathy(:,:) )  
    1657             CALL lbc_lnk( risfdep, 'T', 1. )  
    1658             CALL lbc_lnk( bathy, 'T', 1. ) 
     1677 
     1678            CALL lbc_lnk( risfdep,'T', 1. )  
     1679            CALL lbc_lnk( bathy,  'T', 1. ) 
     1680 
    16591681            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    16601682            CALL lbc_lnk( zbathy, 'T', 1. ) 
     
    16641686         DO jj = 1, jpjm1 
    16651687            DO ji = 1, jpi 
    1666                IF (misfdep(ji,jj) == mbathy(ji,jj+1) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji,jj+1) .GE. 1) THEN 
    1667                   mbathy(ji,jj+1)  = mbathy(ji,jj+1) - 1 ; bathy(ji,jj+1)   = gdepw_1d(mbathy(ji,jj+1)+1) ; 
     1688               IF (misfdep(ji,jj) == mbathy(ji,jj+1) .AND. mbathy(ji,jj) >= 1 .AND. mbathy(ji,jj+1) >= 1) THEN 
     1689                  mbathy(ji,jj+1)  = mbathy(ji,jj+1) - 1 ; bathy(ji,jj+1) = gdepw_1d(mbathy(ji,jj+1)+1) ; 
    16681690               END IF 
    16691691            END DO 
    16701692         END DO 
    16711693         IF( lk_mpp ) THEN  
    1672             zbathy(:,:) = FLOAT( misfdep(:,:) )  
     1694            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    16731695            CALL lbc_lnk( zbathy, 'T', 1. )  
    16741696            misfdep(:,:) = INT( zbathy(:,:) )  
    1675             CALL lbc_lnk( risfdep, 'T', 1. )  
    1676             CALL lbc_lnk( bathy, 'T', 1. ) 
     1697 
     1698            CALL lbc_lnk( risfdep,'T', 1. )  
     1699            CALL lbc_lnk( bathy,  'T', 1. ) 
     1700 
    16771701            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    16781702            CALL lbc_lnk( zbathy, 'T', 1. ) 
     
    16941718! end check compatibility ice shelf/bathy 
    16951719      ! remove very shallow ice shelf (less than ~ 10m if 75L) 
    1696       WHERE (misfdep(:,:) <= 5) 
     1720      WHERE (risfdep(:,:) <= 10._wp) 
    16971721         misfdep = 1; risfdep = 0.0_wp; 
    16981722      END WHERE 
     
    18141838      IF( nn_timing == 1 )  CALL timing_stop('zgr_isf') 
    18151839       
    1816    END SUBROUTINE 
     1840   END SUBROUTINE zgr_isf 
    18171841 
    18181842   SUBROUTINE zgr_sco 
     
    21432167      fsde3w(:,:,:) = gdep3w_0(:,:,:) 
    21442168      ! 
    2145       where (e3t_0   (:,:,:).eq.0.0)  e3t_0(:,:,:) = 1.0 
    2146       where (e3u_0   (:,:,:).eq.0.0)  e3u_0(:,:,:) = 1.0 
    2147       where (e3v_0   (:,:,:).eq.0.0)  e3v_0(:,:,:) = 1.0 
    2148       where (e3f_0   (:,:,:).eq.0.0)  e3f_0(:,:,:) = 1.0 
    2149       where (e3w_0   (:,:,:).eq.0.0)  e3w_0(:,:,:) = 1.0 
    2150       where (e3uw_0  (:,:,:).eq.0.0)  e3uw_0(:,:,:) = 1.0 
    2151       where (e3vw_0  (:,:,:).eq.0.0)  e3vw_0(:,:,:) = 1.0 
     2169      where (e3t_0   (:,:,:) == 0.0)  e3t_0(:,:,:)  = 1.0_wp 
     2170      where (e3u_0   (:,:,:) == 0.0)  e3u_0(:,:,:)  = 1.0_wp 
     2171      where (e3v_0   (:,:,:) == 0.0)  e3v_0(:,:,:)  = 1.0_wp 
     2172      where (e3f_0   (:,:,:) == 0.0)  e3f_0(:,:,:)  = 1.0_wp 
     2173      where (e3w_0   (:,:,:) == 0.0)  e3w_0(:,:,:)  = 1.0_wp 
     2174      where (e3uw_0  (:,:,:) == 0.0)  e3uw_0(:,:,:) = 1.0_wp 
     2175      where (e3vw_0  (:,:,:) == 0.0)  e3vw_0(:,:,:) = 1.0_wp 
    21522176 
    21532177#if defined key_agrif 
Note: See TracChangeset for help on using the changeset viewer.