Changeset 4726


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

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

Location:
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/CONFIG/ISOMIP/cpp_ISOMIP.fcm

    r4666 r4726  
    1  bld::tool::fppkeys key_dynspg_flt key_zdfcst key_iomput key_mpp_mpi 
     1 bld::tool::fppkeys key_dynspg_flt key_zdfcst key_iomput key_mpp_mpi key_mpp_rep  key_ldfslp 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r4666 r4726  
    11521152         END DO 
    11531153 
    1154          tmask_i (:,:) = lmask(:,:) * tmask_i(:,:) 
     1154         tmask_i (:,:) = ssmask(:,:) * tmask_i(:,:) 
    11551155 
    11561156      ENDIF ! ln_mask_file=.TRUE. 
    11571157       
    1158       bdytmask(:,:) = lmask(:,:) 
     1158      bdytmask(:,:) = ssmask(:,:) 
    11591159      IF( .not. ln_mask_file ) THEN 
    11601160         ! If .not. ln_mask_file then we need to derive mask on U and V grid  
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90

    r4666 r4726  
    505505            btmsk(:,:,5) = MAX ( btmsk(:,:,3), btmsk(:,:,4) )          ! Indo-Pacific basin 
    506506            WHERE( gphit(:,:) < -30._wp)   ;   btm30(:,:) = 0._wp      ! mask out Southern Ocean 
    507             ELSE WHERE                     ;   btm30(:,:) = lmask(:,:) 
     507            ELSE WHERE                     ;   btm30(:,:) = ssmask(:,:) 
    508508            END WHERE 
    509509         ENDIF 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r4666 r4726  
    255255   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   bmask                              !: land/ocean mask of barotropic stream function 
    256256 
    257    INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   micedep                 !: top first ocean level                (ISF) 
     257   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   misfdep                 !: top first ocean level                (ISF) 
    258258   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mikt, miku, mikv, mikf  !: first wet T-, U-, V-, F- ocean level (ISF) 
    259    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   icedep, iceh            !: Iceshelf draft, iceshef freeboard    (ISF) 
    260    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   lmask                   !: surface domain T-point mask  
     259   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   risfdep                 !: Iceshelf draft                       (ISF) 
     260   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ssmask                   !: surface domain T-point mask  
    261261 
    262262   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: tmask, umask, vmask, fmask   !: land/ocean mask at T-, U-, V- and F-pts 
     
    391391 
    392392! (ISF) Allocation of basic array    
    393       ALLOCATE( micedep(jpi,jpj) , icedep(jpi,jpj), iceh(jpi,jpj),      & 
     393      ALLOCATE( misfdep(jpi,jpj) , risfdep(jpi,jpj),     & 
    394394         &     mikt(jpi,jpj), miku(jpi,jpj), mikv(jpi,jpj) ,           & 
    395          &     mikf(jpi,jpj), lmask(jpi,jpj), STAT=ierr(10) ) 
     395         &     mikf(jpi,jpj), ssmask(jpi,jpj), STAT=ierr(10) ) 
    396396 
    397397      ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk),     &  
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r4666 r4726  
    186186       
    187187      ! (ISF) define barotropic mask and mask the ice shelf point 
    188       lmask(:,:)=tmask(:,:,1) ! at this stage ice shelf is not masked 
     188      ssmask(:,:)=tmask(:,:,1) ! at this stage ice shelf is not masked 
    189189       
    190190      DO jk = 1, jpk 
    191191         DO jj = 1, jpj 
    192192            DO ji = 1, jpi 
    193                IF( REAL( micedep(ji,jj) - jk, wp ) - 0.1_wp >= 0._wp )   THEN 
     193               IF( REAL( misfdep(ji,jj) - jk, wp ) - 0.1_wp >= 0._wp )   THEN 
    194194                  tmask(ji,jj,jk) = 0._wp 
    195195               END IF 
     
    220220      ! Interior domain mask (used for global sum) 
    221221      ! -------------------- 
    222       tmask_i(:,:) = lmask(:,:)            ! (ISH) tmask_i = 1 even on the ice shelf 
     222      tmask_i(:,:) = ssmask(:,:)            ! (ISH) tmask_i = 1 even on the ice shelf 
    223223      iif = jpreci                         ! ??? 
    224224      iil = nlci - jpreci + 1 
     
    266266      DO jj = 1, jpjm1 
    267267         DO ji = 1, fs_jpim1   ! vector loop 
    268             umask_i(ji,jj)  = lmask(ji,jj) * lmask(ji+1,jj  )  * MIN(1._wp,SUM(umask(ji,jj,:))) 
    269             vmask_i(ji,jj)  = lmask(ji,jj) * lmask(ji  ,jj+1)  * MIN(1._wp,SUM(vmask(ji,jj,:))) 
     268            umask_i(ji,jj)  = ssmask(ji,jj) * ssmask(ji+1,jj  )  * MIN(1._wp,SUM(umask(ji,jj,:))) 
     269            vmask_i(ji,jj)  = ssmask(ji,jj) * ssmask(ji  ,jj+1)  * MIN(1._wp,SUM(vmask(ji,jj,:))) 
    270270         END DO 
    271271         DO ji = 1, jpim1      ! NO vector opt. 
    272             fmask_i(ji,jj) =  lmask(ji,jj  ) * lmask(ji+1,jj  )   & 
    273                &            * lmask(ji,jj+1) * lmask(ji+1,jj+1) * MIN(1._wp,SUM(fmask(ji,jj,:))) 
     272            fmask_i(ji,jj) =  ssmask(ji,jj  ) * ssmask(ji+1,jj  )   & 
     273               &            * ssmask(ji,jj+1) * ssmask(ji+1,jj+1) * MIN(1._wp,SUM(fmask(ji,jj,:))) 
    274274         END DO 
    275275      END DO 
     
    284284      ! 4. ocean/land mask for the elliptic equation 
    285285      ! -------------------------------------------- 
    286       bmask(:,:) = lmask(:,:)       ! elliptic equation is written at t-point 
     286      bmask(:,:) = ssmask(:,:)       ! elliptic equation is written at t-point 
    287287      ! 
    288288      !                               ! Boundary conditions 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r4724 r4726  
    312312      !                                                ! --------------------------------------------- ! 
    313313 
    314       z_scale(:,:) = ( ssha(:,:) - sshb(:,:) ) * lmask(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - lmask(:,:) ) 
     314      z_scale(:,:) = ( ssha(:,:) - sshb(:,:) ) * ssmask(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - ssmask(:,:) ) 
    315315      DO jk = 1, jpkm1 
    316316         ! formally this is the same as fse3t_a = e3t_0*(1+ssha/ht_0) 
     
    472472            zht(:,:)  = zht(:,:) + tilde_e3t_a(:,:,jk) * tmask(:,:,jk) 
    473473         END DO 
    474          z_scale(:,:) =  - zht(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - lmask ) 
     474         z_scale(:,:) =  - zht(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - ssmask(:,:) ) 
    475475         DO jk = 1, jpkm1 
    476476            dtilde_e3t_a(:,:,jk) = dtilde_e3t_a(:,:,jk) + fse3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk) 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90

    r4666 r4726  
    188188       
    189189      ! note that mbkt is set to 1 over land ==> use surface tmask 
    190       zprt(:,:) = lmask(:,:) * REAL( mbkt(:,:) , wp ) 
     190      zprt(:,:) = ssmask(:,:) * REAL( mbkt(:,:) , wp ) 
    191191      CALL iom_rstput( 0, 0, inum4, 'mbathy', zprt, ktype = jp_i2 )     !    ! nb of ocean T-points 
    192       zprt(:,:) = lmask(:,:) * REAL( mikt(:,:) , wp ) 
     192      zprt(:,:) = ssmask(:,:) * REAL( mikt(:,:) , wp ) 
    193193      CALL iom_rstput( 0, 0, inum4, 'misf', zprt, ktype = jp_i2 )       !    ! nb of ocean T-points 
    194       zprt(:,:) = lmask(:,:) * REAL( icedep(:,:) , wp ) 
     194      zprt(:,:) = ssmask(:,:) * REAL( risfdep(:,:) , wp ) 
    195195      CALL iom_rstput( 0, 0, inum4, 'isfdraft', zprt, ktype = jp_r4 )       !    ! nb of ocean T-points 
    196196             
     
    227227            DO jj = 1,jpj    
    228228               DO ji = 1,jpi 
    229                   e3tp(ji,jj) = e3t_0(ji,jj,mbkt(ji,jj)) * lmask(ji,jj) 
    230                   e3wp(ji,jj) = e3w_0(ji,jj,mbkt(ji,jj)) * lmask(ji,jj) 
     229                  e3tp(ji,jj) = e3t_0(ji,jj,mbkt(ji,jj)) * ssmask(ji,jj) 
     230                  e3wp(ji,jj) = e3w_0(ji,jj,mbkt(ji,jj)) * ssmask(ji,jj) 
    231231               END DO 
    232232            END DO 
     
    252252            DO jj = 1,jpj    
    253253               DO ji = 1,jpi 
    254                   zprt(ji,jj) = gdept_0(ji,jj,mbkt(ji,jj)  ) * lmask(ji,jj) 
    255                   zprw(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1) * lmask(ji,jj) 
     254                  zprt(ji,jj) = gdept_0(ji,jj,mbkt(ji,jj)  ) * ssmask(ji,jj) 
     255                  zprw(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1) * ssmask(ji,jj) 
    256256               END DO 
    257257            END DO 
  • 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') 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r4724 r4726  
    410410       
    411411      ! compute rhd at the ice/oce interface (ice shelf side) 
    412       CALL eos(ztstop,icedep,zrhdtop_isf) 
     412      CALL eos(ztstop,risfdep,zrhdtop_isf) 
    413413 
    414414      ! compute rhd at the ice/oce interface (ocean side) 
     
    420420        END DO 
    421421      END DO 
    422       CALL eos(ztstop,icedep,zrhdtop_oce) 
     422      CALL eos(ztstop,risfdep,zrhdtop_oce) 
    423423      ! 
    424424      ! Surface value + ice shelf gradient 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r4724 r4726  
    111111      !  
    112112      z1_rau0 = 0.5_wp * r1_rau0 
    113       ssha(:,:) = (  sshb(:,:) - z2dt * ( z1_rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * lmask(:,:) 
     113      ssha(:,:) = (  sshb(:,:) - z2dt * ( z1_rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
    114114 
    115115#if ! defined key_dynspg_ts 
     
    291291      ELSE                                         !** Leap-Frog time-stepping: Asselin filter + swap 
    292292         sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) )     ! before <-- now filtered 
    293          IF( lk_vvl ) sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * lmask(:,:) 
     293         IF( lk_vvl ) sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * ssmask(:,:) 
    294294         sshn(:,:) = ssha(:,:)                           ! now <-- after 
    295295      ENDIF 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/LDF/ldfeiv.F90

    r4666 r4726  
    165165            zross(ji,jj) = MAX( MIN( .4 * zn(ji,jj) / zfw, 40.e3 ), 2.e3 ) 
    166166            ! Compute aeiw by multiplying Ro^2 and T^-1 
    167             aeiw(ji,jj) = zross(ji,jj) * zross(ji,jj) * SQRT( zah(ji,jj) / zhw(ji,jj) ) * lmask(ji,jj) 
     167            aeiw(ji,jj) = zross(ji,jj) * zross(ji,jj) * SQRT( zah(ji,jj) / zhw(ji,jj) ) * ssmask(ji,jj) 
    168168         END DO 
    169169      END DO 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90

    r4666 r4726  
    5151   REAL(wp)   , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:)     ::  rhisf_tbl, rhisf_tbl_0 !:depth of ice shelf base  ???? 
    5252   REAL(wp)   , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:)     ::  r1_hisf_tbl            !:1/depth of ice shelf base  ???? 
     53   REAL(wp)   , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:)     ::  ralpha                 !:proportion of bottom cell influenced by boundary layer  
    5354   REAL(wp)   , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:)     ::  risfLeff               !:effective length (Leff) BG03 nn_isf==2 ? 
    5455   REAL(wp)   , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:)     ::  ttbl, stbl, utbl, vtbl !:top boundary layer variable at T point 
     
    8586    INTEGER                      ::   ikt, ikb   ! top and bottom level of the isf boundary layer 
    8687    REAL(wp)                     ::   rmin 
     88    REAL(wp)                     ::   zhk 
    8789    CHARACTER(len=256)           ::   cfisf, cvarzisf, cvarhisf   ! name for isf file 
    8890    CHARACTER(LEN=256)           :: cnameis                     ! name of iceshelf file 
     
    188190          
    189191         rhisf_tbl_0(:,:) = rhisf_tbl(:,:) 
    190           
    191       END IF 
    192  
    193       IF( MOD( kt-1, nn_fsbc) == 0 ) THEN 
    194192 
    195193         ! compute bottom level of isf tbl and thickness of tbl below the ice shelf 
    196          ! need to be move out of this test for vvl case 
    197194         DO jj = 1,jpj 
    198195            DO ji = 1,jpi 
     
    200197               ikb = misfkt(ji,jj) 
    201198               ! thickness of boundary layer at least the top level thickness 
    202                rhisf_tbl(ji,jj) = MAX(rhisf_tbl_0(ji,jj), fse3t(ji,jj,ikt)) 
     199               rhisf_tbl(ji,jj) = MAX(rhisf_tbl_0(ji,jj), fse3t_n(ji,jj,ikt)) 
    203200 
    204201               ! determine the deepest level influenced by the boundary layer 
    205202               ! test on tmask useless ????? 
    206203               DO jk = ikt, mbkt(ji,jj) 
    207                   IF ( (SUM(fse3t(ji,jj,ikt:jk-1)) .LT. rhisf_tbl(ji,jj)) .AND. (tmask(ji,jj,jk) == 1) ) ikb = jk 
     204                  IF ( (SUM(fse3t_n(ji,jj,ikt:jk-1)) .LT. rhisf_tbl(ji,jj)) .AND. (tmask(ji,jj,jk) == 1) ) ikb = jk 
    208205               END DO 
    209                rhisf_tbl(ji,jj) = MIN(rhisf_tbl(ji,jj), SUM(fse3t(ji,jj,ikt:ikb)))  ! limit the tbl to water thickness. 
     206               rhisf_tbl(ji,jj) = MIN(rhisf_tbl(ji,jj), SUM(fse3t_n(ji,jj,ikt:ikb)))  ! limit the tbl to water thickness. 
    210207               misfkb(ji,jj) = ikb                                                  ! last wet level of the tbl 
    211208               r1_hisf_tbl(ji,jj) = 1._wp / rhisf_tbl(ji,jj) 
     209 
     210               zhk           = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj)  ! proportion of tbl cover by cell from ikt to ikb - 1 
     211               ralpha(ji,jj) = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb)  ! proportion of bottom cell influenced by boundary layer 
    212212            END DO 
    213213         END DO 
    214  
    215          ! initialisation 
    216          risf_tsc_b(:,:,:)=risf_tsc(:,:,:) ; fwfisf_b(:,:) = fwfisf(:,:)         
     214          
     215      END IF 
     216 
     217      !                                            ! ---------------------------------------- ! 
     218      IF( kt /= nit000 ) THEN                      !          Swap of forcing fields          ! 
     219         !                                         ! ---------------------------------------- ! 
     220         fwfisf_b  (:,:  ) = fwfisf  (:,:  )               ! Swap the ocean forcing fields except at nit000 
     221         risf_tsc_b(:,:,:) = risf_tsc(:,:,:)               ! where before fields are set at the end of the routine 
     222         ! 
     223      ENDIF 
     224 
     225      IF( MOD( kt-1, nn_fsbc) == 0 ) THEN 
     226 
     227 
    217228         ! compute salf and heat flux 
    218229         IF (nn_isf == 1) THEN 
     
    282293         CALL iom_put('qisf'  , qisf) 
    283294         CALL iom_put('fwfisf', fwfisf * stbl(:,:) / soce ) 
    284 !         CALL iom_put('misfkt', misfkt*1._wp) 
    285 !         CALL iom_put('misfkb', misfkb*1._wp) 
    286 !         CALL iom_put('rhisf', rhisf_tbl) 
    287295      END IF 
    288296   
     
    298306               &    fwfisf_b(jpi,jpj), misfkt(jpi,jpj), rhisf_tbl(jpi,jpj), r1_hisf_tbl(jpi,jpj),     & 
    299307               &    rzisf_tbl(jpi,jpj), misfkb(jpi,jpj), ttbl(jpi,jpj), stbl(jpi,jpj), utbl(jpi,jpj), & 
    300                &    vtbl(jpi, jpj), risfLeff(jpi,jpj), rhisf_tbl_0(jpi,jpj), STAT= sbc_isf_alloc ) 
     308               &    vtbl(jpi, jpj), risfLeff(jpi,jpj), rhisf_tbl_0(jpi,jpj), ralpha(jpi,jpj), STAT= sbc_isf_alloc ) 
    301309         ! 
    302310         IF( lk_mpp                  )   CALL mpp_sum ( sbc_isf_alloc ) 
     
    491499                     zeps1=rcp*rau0*zgammat 
    492500                     zeps2=lfusisf*rau0*zgammas 
    493                      zeps3=rhoisf*rcpi*kappa/icedep(ji,jj) 
    494                      zeps4=zlamb2+zlamb3*icedep(ji,jj) 
     501                     zeps3=rhoisf*rcpi*kappa/risfdep(ji,jj) 
     502                     zeps4=zlamb2+zlamb3*risfdep(ji,jj) 
    495503                     zeps6=zeps4-zti(ji,jj) 
    496504                     zeps7=zeps4-tsurf 
     
    742750      DO jj = 2,jpj 
    743751         DO ji = 2,jpi 
    744             IF (lmask(ji,jj) == 1) THEN 
     752            IF (ssmask(ji,jj) == 1) THEN 
    745753               ikt = mkt(ji,jj) 
    746754               ikb = mkb(ji,jj) 
     
    748756               ! level fully include in the ice shelf boundary layer 
    749757               DO jk = ikt, ikb - 1 
    750                   ze3 = fse3t(ji,jj,jk) 
     758                  ze3 = fse3t_n(ji,jj,jk) 
    751759                  IF (cptin == 'T' ) varout(ji,jj) = varout(ji,jj) + varin(ji,jj,jk) * r1_hisf_tbl(ji,jj) * ze3 
    752760                  IF (cptin == 'U' ) varout(ji,jj) = varout(ji,jj) + 0.5_wp * (varin(ji,jj,jk) + varin(ji-1,jj,jk)) & 
     
    757765 
    758766               ! level partially include in ice shelf boundary layer  
    759                zhk = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) 
     767               zhk = SUM( fse3t_n(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) 
    760768               IF (cptin == 'T') varout(ji,jj) = varout(ji,jj) + varin(ji,jj,ikb) * (1._wp - zhk) 
    761769               IF (cptin == 'U') varout(ji,jj) = varout(ji,jj) + 0.5_wp * (varin(ji,jj,ikb) + varin(ji-1,jj,ikb)) * (1._wp - zhk) 
     
    791799      INTEGER(wp)  ::   ikt, ikb  
    792800      INTEGER(wp)  ::   nk_isf 
    793       REAL(wp) ::   zalpha, zhk, z1_hisf_tbl, zhisf_tbl 
    794       REAL(wp) ::   zfact     ! local scalar 
     801      REAL(wp)     ::  zhk, z1_hisf_tbl, zhisf_tbl 
     802      REAL(wp)     ::   zfact     ! local scalar 
    795803      !!---------------------------------------------------------------------- 
    796804      ! 
     
    813821               misfkb(ji,jj) = ikb                                                  ! last wet level of the tbl 
    814822               r1_hisf_tbl(ji,jj) = 1._wp / rhisf_tbl(ji,jj) 
     823 
     824               zhk           = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj)  ! proportion of tbl cover by cell from ikt to ikb - 1 
     825               ralpha(ji,jj) = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb)  ! proportion of bottom cell influenced by boundary layer 
    815826            END DO 
    816827         END DO 
     
    819830      DO jj = 1,jpj 
    820831         DO ji = 1,jpi 
    821             IF (lmask(ji,jj) == 1) THEN 
    822832               ikt = misfkt(ji,jj) 
    823833               ikb = misfkb(ji,jj) 
    824834               ! level fully include in the ice shelf boundary layer 
    825835               DO jk = ikt, ikb - 1 
    826                   phdivn(ji,jj,jk) = phdivn(ji,jj,jk) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj)) * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact 
     836                  phdivn(ji,jj,jk) = phdivn(ji,jj,jk) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact 
    827837               END DO 
    828838               ! level partially include in ice shelf boundary layer  
    829                zhk   = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj)  ! proportion of tbl cover by cell from ikt to ikb - 1 
    830                zalpha = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb)  ! proportion of bottom cell influenced by boundary layer 
    831                phdivn(ji,jj,ikb) = phdivn(ji,jj,ikb) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) * zalpha * r1_rau0 * zfact * r1_hisf_tbl(ji,jj) 
     839               phdivn(ji,jj,ikb) = phdivn(ji,jj,ikb) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact * ralpha(ji,jj)  
    832840            !==   ice shelf melting mass distributed over several levels   ==! 
    833             END IF 
    834841         END DO 
    835842      END DO 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90

    r4666 r4726  
    405405         DO jj = 1, jpj 
    406406            DO ji = 1, jpi   ! vector opt. 
    407                zmask = lmask(ji,jj)          ! land/sea bottom mask = surf. mask 
     407               zmask = ssmask(ji,jj)          ! land/sea bottom mask = surf. mask 
    408408               zt    = pts  (ji,jj,jp_tem)            ! interpolated T 
    409409               zs    = pts  (ji,jj,jp_sal)            ! interpolated S 
     
    447447         DO jj = 1, jpj 
    448448            DO ji = 1, jpi   ! vector opt. 
    449                prd(ji,jj) = ( 0.0285_wp - rn_alpha * pts(ji,jj,jp_tem) ) * lmask(ji,jj) 
     449               prd(ji,jj) = ( 0.0285_wp - rn_alpha * pts(ji,jj,jp_tem) ) * ssmask(ji,jj) 
    450450            END DO 
    451451         END DO 
     
    454454         DO jj = 1, jpj 
    455455            DO ji = 1, jpi   ! vector opt. 
    456                prd(ji,jj) = ( rn_beta * pts(ji,jj,jp_sal) - rn_alpha * pts(ji,jj,jp_tem) ) * lmask(ji,jj) 
     456               prd(ji,jj) = ( rn_beta * pts(ji,jj,jp_sal) - rn_alpha * pts(ji,jj,jp_tem) ) * ssmask(ji,jj) 
    457457            END DO 
    458458         END DO 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r4666 r4726  
    420420#endif 
    421421            ik = mbkt(ji,jj)                        ! bottom T-level index 
    422             ztb (ji,jj) = tsb(ji,jj,ik,jp_tem) * lmask(ji,jj)      ! bottom before T and S 
    423             zsb (ji,jj) = tsb(ji,jj,ik,jp_sal) * lmask(ji,jj) 
     422            ztb (ji,jj) = tsb(ji,jj,ik,jp_tem) * ssmask(ji,jj)      ! bottom before T and S 
     423            zsb (ji,jj) = tsb(ji,jj,ik,jp_sal) * ssmask(ji,jj) 
    424424            zdep(ji,jj) = gdept_0(ji,jj,ik)         ! bottom T-level reference depth 
    425425            ! 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r4724 r4726  
    230230               DO jk = ikt, ikb - 1 
    231231               ! compute tfreez for the temperature correction (we add water at freezing temperature) 
    232                   zpress = grav*rau0*fsdept(ji,jj,jk)*1.e-04 
     232!                  zpress = grav*rau0*fsdept(ji,jj,jk)*1.e-04 
    233233                  zt_frz = -1.9 !tfreez1D( tsn(ji,jj,jk,jp_sal), zpress ) 
    234234               ! compute trend 
     
    242242    
    243243               ! level partially include in ice shelf boundary layer  
    244                zhk   = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj)  ! proportion of tbl cover by cell from ikt to ikb - 1 
    245                zalpha = rhisf_tbl(ji,jj) * ( 1._wp - zhk ) / fse3t(ji,jj,ikb)     ! proportion of bottom cell influenced by boundary layer 
    246244               ! compute tfreez for the temperature correction (we add water at freezing temperature) 
    247                zpress = grav*rau0*fsdept(ji,jj,ikb)*1.e-04 
     245!               zpress = grav*rau0*fsdept(ji,jj,ikb)*1.e-04 
    248246               zt_frz = -1.9 !tfreez1D( tsn(ji,jj,ikb,jp_sal), zpress ) 
    249247               ! compute trend 
     
    251249                  &              + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem)          & 
    252250                  &                  - rdivisf * (fwfisf(ji,jj) + fwfisf_b(ji,jj)) * zt_frz * r1_rau0) &  
    253                   &              * r1_hisf_tbl(ji,jj) * zalpha 
     251                  &              * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) 
    254252               tsa(ji,jj,ikb,jp_sal) = tsa(ji,jj,ikb,jp_sal)                                           & 
    255                   &              + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) * zalpha  
     253                  &              + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj)  
    256254            END DO 
    257255         END DO 
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r4666 r4726  
    425425      ! only the energy available for mixing is taken into account, 
    426426      ! (mixing efficiency tidal dissipation efficiency) 
    427       en_tmx(:,:) = - rn_tfe * rn_me * ( zem2(:,:) * 1.25 + zek1(:,:) ) * lmask(:,:) 
     427      en_tmx(:,:) = - rn_tfe * rn_me * ( zem2(:,:) * 1.25 + zek1(:,:) ) * ssmask(:,:) 
    428428 
    429429      ! Vertical structure (az_tmx) 
Note: See TracChangeset for help on using the changeset viewer.