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 5123 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90 – NEMO

Ignore:
Timestamp:
2015-03-04T17:06:03+01:00 (9 years ago)
Author:
clem
Message:

major LIM3 cleaning + monocat capabilities + NEMO namelist-consistency; sette to follow

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90

    r4990 r5123  
    1313   !!   'key_lim3' :                                   LIM3 sea-ice model 
    1414   !!---------------------------------------------------------------------- 
    15    !!   lim_itd_th       : thermodynamics of ice thickness distribution 
    1615   !!   lim_itd_th_rem   : 
    1716   !!   lim_itd_th_reb   : 
     
    2524   USE thd_ice          ! LIM-3 thermodynamic variables 
    2625   USE ice              ! LIM-3 variables 
    27    USE par_ice          ! LIM-3 parameters 
    28    USE limthd_lac       ! LIM-3 lateral accretion 
    2926   USE limvar           ! LIM-3 variables 
    3027   USE limcons          ! LIM-3 conservation 
     
    3431   USE wrk_nemo         ! work arrays 
    3532   USE lib_fortran      ! to use key_nosignedzero 
    36    USE timing          ! Timing 
    37    USE limcons        ! conservation tests 
     33   USE limcons          ! conservation tests 
    3834 
    3935   IMPLICIT NONE 
    4036   PRIVATE 
    4137 
    42    PUBLIC   lim_itd_th         ! called by ice_stp 
    4338   PUBLIC   lim_itd_th_rem 
    4439   PUBLIC   lim_itd_th_reb 
     
    5247   !!---------------------------------------------------------------------- 
    5348CONTAINS 
    54  
    55    SUBROUTINE lim_itd_th( kt ) 
    56       !!------------------------------------------------------------------ 
    57       !!                ***  ROUTINE lim_itd_th *** 
    58       !! 
    59       !! ** Purpose :   computes the thermodynamics of ice thickness distribution 
    60       !! 
    61       !! ** Method  : 
    62       !!------------------------------------------------------------------ 
    63       INTEGER, INTENT(in) ::   kt   ! time step index 
    64       ! 
    65       INTEGER ::   ji, jj, jk, jl   ! dummy loop index          
    66       ! 
    67       REAL(wp) :: zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b  
    68       !!------------------------------------------------------------------ 
    69       IF( nn_timing == 1 )  CALL timing_start('limitd_th') 
    70  
    71       ! conservation test 
    72       IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limitd_th', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    73  
    74       IF( kt == nit000 .AND. lwp ) THEN 
    75          WRITE(numout,*) 
    76          WRITE(numout,*) 'lim_itd_th  : Thermodynamics of the ice thickness distribution' 
    77          WRITE(numout,*) '~~~~~~~~~~~' 
    78       ENDIF 
    79  
    80       !------------------------------------------------------------------------------| 
    81       !  1) Transport of ice between thickness categories.                           | 
    82       !------------------------------------------------------------------------------| 
    83       ! Given thermodynamic growth rates, transport ice between 
    84       ! thickness categories. 
    85       IF( jpl > 1 )   CALL lim_itd_th_rem( 1, jpl, kt ) 
    86       ! 
    87       CALL lim_var_glo2eqv    ! only for info 
    88       CALL lim_var_agg(1) 
    89  
    90       !------------------------------------------------------------------------------| 
    91       !  3) Add frazil ice growing in leads. 
    92       !------------------------------------------------------------------------------| 
    93       CALL lim_thd_lac 
    94       CALL lim_var_glo2eqv    ! only for info 
    95       
    96       IF(ln_ctl) THEN   ! Control print 
    97          CALL prt_ctl_info(' ') 
    98          CALL prt_ctl_info(' - Cell values : ') 
    99          CALL prt_ctl_info('   ~~~~~~~~~~~~~ ') 
    100          CALL prt_ctl(tab2d_1=area , clinfo1=' lim_itd_th  : cell area :') 
    101          CALL prt_ctl(tab2d_1=at_i , clinfo1=' lim_itd_th  : at_i      :') 
    102          CALL prt_ctl(tab2d_1=vt_i , clinfo1=' lim_itd_th  : vt_i      :') 
    103          CALL prt_ctl(tab2d_1=vt_s , clinfo1=' lim_itd_th  : vt_s      :') 
    104          DO jl = 1, jpl 
    105             CALL prt_ctl_info(' ') 
    106             CALL prt_ctl_info(' - Category : ', ivar1=jl) 
    107             CALL prt_ctl_info('   ~~~~~~~~~~') 
    108             CALL prt_ctl(tab2d_1=a_i   (:,:,jl)   , clinfo1= ' lim_itd_th  : a_i      : ') 
    109             CALL prt_ctl(tab2d_1=ht_i  (:,:,jl)   , clinfo1= ' lim_itd_th  : ht_i     : ') 
    110             CALL prt_ctl(tab2d_1=ht_s  (:,:,jl)   , clinfo1= ' lim_itd_th  : ht_s     : ') 
    111             CALL prt_ctl(tab2d_1=v_i   (:,:,jl)   , clinfo1= ' lim_itd_th  : v_i      : ') 
    112             CALL prt_ctl(tab2d_1=v_s   (:,:,jl)   , clinfo1= ' lim_itd_th  : v_s      : ') 
    113             CALL prt_ctl(tab2d_1=e_s   (:,:,1,jl) , clinfo1= ' lim_itd_th  : e_s      : ') 
    114             CALL prt_ctl(tab2d_1=t_su  (:,:,jl)   , clinfo1= ' lim_itd_th  : t_su     : ') 
    115             CALL prt_ctl(tab2d_1=t_s   (:,:,1,jl) , clinfo1= ' lim_itd_th  : t_snow   : ') 
    116             CALL prt_ctl(tab2d_1=sm_i  (:,:,jl)   , clinfo1= ' lim_itd_th  : sm_i     : ') 
    117             CALL prt_ctl(tab2d_1=smv_i (:,:,jl)   , clinfo1= ' lim_itd_th  : smv_i    : ') 
    118             DO jk = 1, nlay_i 
    119                CALL prt_ctl_info(' ') 
    120                CALL prt_ctl_info(' - Layer : ', ivar1=jk) 
    121                CALL prt_ctl_info('   ~~~~~~~') 
    122                CALL prt_ctl(tab2d_1=t_i(:,:,jk,jl) , clinfo1= ' lim_itd_th  : t_i      : ') 
    123                CALL prt_ctl(tab2d_1=e_i(:,:,jk,jl) , clinfo1= ' lim_itd_th  : e_i      : ') 
    124             END DO 
    125          END DO 
    126       ENDIF 
    127       ! 
    128       ! conservation test 
    129       IF( ln_limdiahsb ) CALL lim_cons_hsm(1, 'limitd_th', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    130       ! 
    131      IF( nn_timing == 1 )  CALL timing_stop('limitd_th') 
    132    END SUBROUTINE lim_itd_th 
    133    ! 
    13449 
    13550   SUBROUTINE lim_itd_th_rem( klbnd, kubnd, kt ) 
     
    15368      REAL(wp) ::   zx1, zwk1, zdh0, zetamin, zdamax   ! local scalars 
    15469      REAL(wp) ::   zx2, zwk2, zda0, zetamax           !   -      - 
    155       REAL(wp) ::   zx3,             zareamin          !   -      - 
     70      REAL(wp) ::   zx3         
    15671      CHARACTER (len = 15) :: fieldid 
    15772 
     
    188103      CALL wrk_alloc( jpi,jpj, zhb0,zhb1,vt_i_init,vt_i_final,vt_s_init,vt_s_final,et_i_init,et_i_final,et_s_init,et_s_final ) 
    189104 
    190       zareamin = epsi10   !minimum area in thickness categories tolerated by the conceptors of the model 
    191  
    192105      !!---------------------------------------------------------------------------------------------- 
    193106      !! 0) Conservation checkand changes in each ice category 
     
    216129         DO jj = 1, jpj 
    217130            DO ji = 1, jpi 
    218                rswitch             = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i(ji,jj,jl) + epsi10 ) )     !0 if no ice and 1 if yes 
     131               rswitch           = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i(ji,jj,jl) + epsi10 ) )     !0 if no ice and 1 if yes 
    219132               ht_i(ji,jj,jl)    = v_i(ji,jj,jl) / MAX( a_i(ji,jj,jl), epsi10 ) * rswitch 
    220                rswitch             = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i_b(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes 
     133               rswitch           = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i_b(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes 
    221134               zht_i_b(ji,jj,jl) = v_i_b(ji,jj,jl) / MAX( a_i_b(ji,jj,jl), epsi10 ) * rswitch 
    222135               IF( a_i(ji,jj,jl) > epsi10 )   zdhice(ji,jj,jl) = ht_i(ji,jj,jl) - zht_i_b(ji,jj,jl)  
     
    239152      DO jj = 1, jpj 
    240153         DO ji = 1, jpi 
    241             IF ( at_i(ji,jj) .gt. zareamin ) THEN 
     154            IF ( at_i(ji,jj) > epsi10 ) THEN 
    242155               nbrem         = nbrem + 1 
    243156               nind_i(nbrem) = ji 
     
    247160               zremap_flag(ji,jj) = 0 
    248161            ENDIF 
    249          END DO !ji 
    250       END DO !jj 
     162         END DO 
     163      END DO 
    251164 
    252165      !----------------------------------------------------------------------------------------------- 
     
    254167      !----------------------------------------------------------------------------------------------- 
    255168      !- 4.1 Compute category boundaries 
    256       ! Tricky trick see limitd_me.F90 
    257       ! will be soon removed, CT 
    258       ! hi_max(kubnd) = 99. 
    259169      zhbnew(:,:,:) = 0._wp 
    260170 
     
    291201         END DO 
    292202 
    293       END DO !jl 
     203      END DO 
    294204 
    295205      !----------------------------------------------------------------------------------------------- 
     
    334244      !----------------------------------------------------------------------------------------------- 
    335245      !- 7.1 g(h) for category 1 at start of time step 
    336       CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_b(:,:,klbnd),         & 
    337          &                  g0(:,:,klbnd), g1(:,:,klbnd), hL(:,:,klbnd),   & 
     246      CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_b(:,:,klbnd), g0(:,:,klbnd), g1(:,:,klbnd), hL(:,:,klbnd),   & 
    338247         &                  hR(:,:,klbnd), zremap_flag ) 
    339248 
     
    344253 
    345254         !ji 
    346          IF (a_i(ii,ij,klbnd) .gt. epsi10) THEN 
     255         IF( a_i(ii,ij,klbnd) > epsi10 ) THEN 
    347256            zdh0 = zdhice(ii,ij,klbnd) !decrease of ice thickness in the lower category 
    348257            ! ji, a_i > epsi10 
    349             IF (zdh0 .lt. 0.0) THEN !remove area from category 1 
     258            IF( zdh0 < 0.0 ) THEN !remove area from category 1 
    350259               ! ji, a_i > epsi10; zdh0 < 0 
    351                zdh0 = MIN(-zdh0,hi_max(klbnd)) 
     260               zdh0 = MIN( -zdh0, hi_max(klbnd) ) 
    352261 
    353262               !Integrate g(1) from 0 to dh0 to estimate area melted 
    354                zetamax = MIN(zdh0,hR(ii,ij,klbnd)) - hL(ii,ij,klbnd) 
    355                IF (zetamax.gt.0.0) THEN 
     263               zetamax = MIN( zdh0, hR(ii,ij,klbnd) ) - hL(ii,ij,klbnd) 
     264               IF( zetamax > 0.0 ) THEN 
    356265                  zx1  = zetamax 
    357                   zx2  = 0.5 * zetamax*zetamax  
     266                  zx2  = 0.5 * zetamax * zetamax  
    358267                  zda0 = g1(ii,ij,klbnd) * zx2 + g0(ii,ij,klbnd) * zx1 !ice area removed 
    359268                  ! Constrain new thickness <= ht_i 
    360                   zdamax = a_i(ii,ij,klbnd) * &  
    361                      (1.0 - ht_i(ii,ij,klbnd)/zht_i_b(ii,ij,klbnd)) ! zdamax > 0 
     269                  zdamax = a_i(ii,ij,klbnd) * (1.0 - ht_i(ii,ij,klbnd) / zht_i_b(ii,ij,klbnd) ) ! zdamax > 0 
    362270                  !ice area lost due to melting of thin ice 
    363                   zda0   = MIN(zda0, zdamax) 
     271                  zda0   = MIN( zda0, zdamax ) 
    364272 
    365273                  ! Remove area, conserving volume 
    366                   ht_i(ii,ij,klbnd) = ht_i(ii,ij,klbnd) &  
    367                      * a_i(ii,ij,klbnd) / ( a_i(ii,ij,klbnd) - zda0 ) 
     274                  ht_i(ii,ij,klbnd) = ht_i(ii,ij,klbnd) * a_i(ii,ij,klbnd) / ( a_i(ii,ij,klbnd) - zda0 ) 
    368275                  a_i(ii,ij,klbnd)  = a_i(ii,ij,klbnd) - zda0 
    369                   v_i(ii,ij,klbnd)  = a_i(ii,ij,klbnd)*ht_i(ii,ij,klbnd) ! clem-useless ? 
    370                ENDIF     ! zetamax > 0 
     276                  v_i(ii,ij,klbnd)  = a_i(ii,ij,klbnd) * ht_i(ii,ij,klbnd) ! clem-useless ? 
     277               ENDIF 
    371278               ! ji, a_i > epsi10 
    372279 
    373280            ELSE ! if ice accretion 
    374281               ! ji, a_i > epsi10; zdh0 > 0 
    375                zhbnew(ii,ij,klbnd-1) = MIN(zdh0,hi_max(klbnd))  
     282               zhbnew(ii,ij,klbnd-1) = MIN( zdh0, hi_max(klbnd) )  
    376283               ! zhbnew was 0, and is shifted to the right to account for thin ice 
    377284               ! growth in openwater (F0 = f1) 
     
    385292      !- 7.3 g(h) for each thickness category   
    386293      DO jl = klbnd, kubnd 
    387          CALL lim_itd_fitline(jl, zhbnew(:,:,jl-1), zhbnew(:,:,jl), ht_i(:,:,jl), & 
    388             g0(:,:,jl), g1(:,:,jl), hL(:,:,jl), hR(:,:,jl), zremap_flag) 
     294         CALL lim_itd_fitline( jl, zhbnew(:,:,jl-1), zhbnew(:,:,jl), ht_i(:,:,jl), & 
     295            &                  g0(:,:,jl), g1(:,:,jl), hL(:,:,jl), hR(:,:,jl), zremap_flag ) 
    389296      END DO 
    390297 
     
    406313            ij = nind_j(ji) 
    407314 
    408             IF (zhbnew(ii,ij,jl) .gt. hi_max(jl)) THEN ! transfer from jl to jl+1 
     315            IF (zhbnew(ii,ij,jl) > hi_max(jl)) THEN ! transfer from jl to jl+1 
    409316 
    410317               ! left and right integration limits in eta space 
    411                zvetamin(ji) = MAX(hi_max(jl), hL(ii,ij,jl)) - hL(ii,ij,jl) 
    412                zvetamax(ji) = MIN(zhbnew(ii,ij,jl), hR(ii,ij,jl)) - hL(ii,ij,jl) 
     318               zvetamin(ji) = MAX( hi_max(jl), hL(ii,ij,jl) ) - hL(ii,ij,jl) 
     319               zvetamax(ji) = MIN (zhbnew(ii,ij,jl), hR(ii,ij,jl) ) - hL(ii,ij,jl) 
    413320               zdonor(ii,ij,jl) = jl 
    414321 
     
    417324               ! left and right integration limits in eta space 
    418325               zvetamin(ji) = 0.0 
    419                zvetamax(ji) = MIN(hi_max(jl), hR(ii,ij,jl+1)) - hL(ii,ij,jl+1) 
     326               zvetamax(ji) = MIN( hi_max(jl), hR(ii,ij,jl+1) ) - hL(ii,ij,jl+1) 
    420327               zdonor(ii,ij,jl) = jl + 1 
    421328 
    422329            ENDIF  ! zhbnew(jl) > hi_max(jl) 
    423330 
    424             zetamax = MAX(zvetamax(ji), zvetamin(ji)) ! no transfer if etamax < etamin 
     331            zetamax = MAX( zvetamax(ji), zvetamin(ji) ) ! no transfer if etamax < etamin 
    425332            zetamin = zvetamin(ji) 
    426333 
    427334            zx1  = zetamax - zetamin 
    428             zwk1 = zetamin*zetamin 
    429             zwk2 = zetamax*zetamax 
    430             zx2  = 0.5 * (zwk2 - zwk1) 
     335            zwk1 = zetamin * zetamin 
     336            zwk2 = zetamax * zetamax 
     337            zx2  = 0.5 * ( zwk2 - zwk1 ) 
    431338            zwk1 = zwk1 * zetamin 
    432339            zwk2 = zwk2 * zetamax 
    433             zx3  = 1.0/3.0 * (zwk2 - zwk1) 
     340            zx3  = 1.0 / 3.0 * ( zwk2 - zwk1 ) 
    434341            nd   = zdonor(ii,ij,jl) 
    435342            zdaice(ii,ij,jl) = g1(ii,ij,nd)*zx2 + g0(ii,ij,nd)*zx1 
    436343            zdvice(ii,ij,jl) = g1(ii,ij,nd)*zx3 + g0(ii,ij,nd)*zx2 + zdaice(ii,ij,jl)*hL(ii,ij,nd) 
    437344 
    438          END DO ! ji 
     345         END DO 
    439346      END DO ! jl klbnd -> kubnd - 1 
    440347 
     
    451358         ii = nind_i(ji) 
    452359         ij = nind_j(ji) 
    453          IF ( a_i(ii,ij,1) > epsi10 .AND. ht_i(ii,ij,1) < hiclim ) THEN 
    454             a_i(ii,ij,1)  = a_i(ii,ij,1) * ht_i(ii,ij,1) / hiclim  
    455             ht_i(ii,ij,1) = hiclim 
     360         IF ( a_i(ii,ij,1) > epsi10 .AND. ht_i(ii,ij,1) < rn_himin ) THEN 
     361            a_i(ii,ij,1)  = a_i(ii,ij,1) * ht_i(ii,ij,1) / rn_himin  
     362            ht_i(ii,ij,1) = rn_himin 
    456363         ENDIF 
    457       END DO !ji 
     364      END DO 
    458365 
    459366      !!---------------------------------------------------------------------------------------------- 
     
    491398 
    492399 
    493    SUBROUTINE lim_itd_fitline( num_cat, HbL, Hbr, hice,   & 
    494       &                        g0, g1, hL, hR, zremap_flag ) 
     400   SUBROUTINE lim_itd_fitline( num_cat, HbL, Hbr, hice, g0, g1, hL, hR, zremap_flag ) 
    495401      !!------------------------------------------------------------------ 
    496402      !!                ***  ROUTINE lim_itd_fitline *** 
     
    532438               ! Change hL or hR if hice falls outside central third of range 
    533439 
    534                zh13 = 1.0/3.0 * (2.0*hL(ji,jj) + hR(ji,jj)) 
    535                zh23 = 1.0/3.0 * (hL(ji,jj) + 2.0*hR(ji,jj)) 
     440               zh13 = 1.0 / 3.0 * ( 2.0 * hL(ji,jj) + hR(ji,jj) ) 
     441               zh23 = 1.0 / 3.0 * ( hL(ji,jj) + 2.0 * hR(ji,jj) ) 
    536442 
    537443               IF    ( hice(ji,jj) < zh13 ) THEN   ;   hR(ji,jj) = 3._wp * hice(ji,jj) - 2._wp * hL(ji,jj) 
     
    544450               zwk1 = 6._wp * a_i(ji,jj,num_cat) * zdhr 
    545451               zwk2 = ( hice(ji,jj) - hL(ji,jj) ) * zdhr 
    546                g0(ji,jj) = zwk1 * ( 2._wp/3._wp - zwk2 ) 
    547                g1(ji,jj) = 2._wp * zdhr * zwk1 * (zwk2 - 0.5) 
     452               g0(ji,jj) = zwk1 * ( 2._wp / 3._wp - zwk2 ) 
     453               g1(ji,jj) = 2._wp * zdhr * zwk1 * ( zwk2 - 0.5 ) 
    548454               ! 
    549455            ELSE                   ! remap_flag = .false. or a_i < epsi10  
     
    606512 
    607513      DO jl = klbnd, kubnd 
    608          zaTsfn(:,:,jl) = a_i(:,:,jl)*t_su(:,:,jl) 
     514         zaTsfn(:,:,jl) = a_i(:,:,jl) * t_su(:,:,jl) 
    609515      END DO 
    610516 
     
    629535            DO ji = 1, jpi 
    630536 
    631                IF (zdonor(ji,jj,jl) .GT. 0) THEN 
     537               IF (zdonor(ji,jj,jl) > 0) THEN 
    632538                  jl1 = zdonor(ji,jj,jl) 
    633539 
    634                   IF (zdaice(ji,jj,jl) .LT. 0.0) THEN 
    635                      IF (zdaice(ji,jj,jl) .GT. -epsi10) THEN 
    636                         IF ( ( jl1.EQ.jl   .AND. ht_i(ji,jj,jl1) .GT. hi_max(jl) )           & 
    637                            .OR.                                      & 
    638                            ( jl1.EQ.jl+1 .AND. ht_i(ji,jj,jl1) .LE. hi_max(jl) )           &   
    639                            ) THEN                                                              
     540                  IF (zdaice(ji,jj,jl) < 0.0) THEN 
     541                     IF (zdaice(ji,jj,jl) > -epsi10) THEN 
     542                        IF ( ( jl1 == jl   .AND. ht_i(ji,jj,jl1) >  hi_max(jl) ) .OR.  & 
     543                             ( jl1 == jl+1 .AND. ht_i(ji,jj,jl1) <= hi_max(jl) ) ) THEN 
    640544                           zdaice(ji,jj,jl) = a_i(ji,jj,jl1)  ! shift entire category 
    641545                           zdvice(ji,jj,jl) = v_i(ji,jj,jl1) 
     
    649553                  ENDIF 
    650554 
    651                   IF (zdvice(ji,jj,jl) .LT. 0.0) THEN 
    652                      IF (zdvice(ji,jj,jl) .GT. -epsi10 ) THEN 
    653                         IF ( ( jl1.EQ.jl .AND. ht_i(ji,jj,jl1).GT.hi_max(jl) )     & 
    654                            .OR.                                     & 
    655                            ( jl1.EQ.jl+1 .AND. ht_i(ji,jj,jl1) .LE. hi_max(jl) ) & 
    656                            ) THEN 
     555                  IF (zdvice(ji,jj,jl) < 0.0) THEN 
     556                     IF (zdvice(ji,jj,jl) > -epsi10 ) THEN 
     557                        IF ( ( jl1 == jl   .AND. ht_i(ji,jj,jl1) >  hi_max(jl) ) .OR.  & 
     558                             ( jl1 == jl+1 .AND. ht_i(ji,jj,jl1) <= hi_max(jl) ) ) THEN 
    657559                           zdaice(ji,jj,jl) = a_i(ji,jj,jl1) ! shift entire category 
    658560                           zdvice(ji,jj,jl) = v_i(ji,jj,jl1)  
     
    667569 
    668570                  ! If daice is close to aicen, set daice = aicen. 
    669                   IF (zdaice(ji,jj,jl) .GT. a_i(ji,jj,jl1) - epsi10 ) THEN 
    670                      IF (zdaice(ji,jj,jl) .LT. a_i(ji,jj,jl1)+epsi10) THEN 
     571                  IF (zdaice(ji,jj,jl) > a_i(ji,jj,jl1) - epsi10 ) THEN 
     572                     IF (zdaice(ji,jj,jl) < a_i(ji,jj,jl1)+epsi10) THEN 
    671573                        zdaice(ji,jj,jl) = a_i(ji,jj,jl1) 
    672574                        zdvice(ji,jj,jl) = v_i(ji,jj,jl1)  
     
    676578                  ENDIF 
    677579 
    678                   IF (zdvice(ji,jj,jl) .GT. v_i(ji,jj,jl1)-epsi10) THEN 
    679                      IF (zdvice(ji,jj,jl) .LT. v_i(ji,jj,jl1)+epsi10) THEN 
     580                  IF (zdvice(ji,jj,jl) > v_i(ji,jj,jl1)-epsi10) THEN 
     581                     IF (zdvice(ji,jj,jl) < v_i(ji,jj,jl1)+epsi10) THEN 
    680582                        zdaice(ji,jj,jl) = a_i(ji,jj,jl1) 
    681583                        zdvice(ji,jj,jl) = v_i(ji,jj,jl1)  
     
    686588 
    687589               ENDIF               ! donor > 0 
    688             END DO                   ! i 
    689          END DO                 ! j 
    690  
    691       END DO !jl 
     590            END DO 
     591         END DO 
     592 
     593      END DO 
    692594 
    693595      !------------------------------------------------------------------------------- 
     
    699601         DO jj = 1, jpj 
    700602            DO ji = 1, jpi 
    701                IF (zdaice(ji,jj,jl) .GT. 0.0 ) THEN ! daice(n) can be < puny 
     603               IF (zdaice(ji,jj,jl) > 0.0 ) THEN ! daice(n) can be < puny 
    702604                  nbrem = nbrem + 1 
    703605                  nind_i(nbrem) = ji 
    704606                  nind_j(nbrem) = jj 
    705                ENDIF ! tmask 
     607               ENDIF 
    706608            END DO 
    707609         END DO 
     
    712614 
    713615            jl1 = zdonor(ii,ij,jl) 
    714             rswitch             = MAX( 0.0 , SIGN( 1.0 , v_i(ii,ij,jl1) - epsi10 ) ) 
    715             zworka(ii,ij)   = zdvice(ii,ij,jl) / MAX(v_i(ii,ij,jl1),epsi10) * rswitch 
     616            rswitch       = MAX( 0.0 , SIGN( 1.0 , v_i(ii,ij,jl1) - epsi10 ) ) 
     617            zworka(ii,ij) = zdvice(ii,ij,jl) / MAX( v_i(ii,ij,jl1), epsi10 ) * rswitch 
    716618            IF( jl1 == jl) THEN   ;   jl2 = jl1+1 
    717             ELSE                    ;   jl2 = jl  
     619            ELSE                  ;   jl2 = jl  
    718620            ENDIF 
    719621 
     
    772674            zaTsfn(ii,ij,jl2)  = zaTsfn(ii,ij,jl2) + zdaTsf  
    773675 
    774          END DO                 ! ji 
     676         END DO 
    775677 
    776678         !------------------ 
     
    779681 
    780682         DO jk = 1, nlay_i 
    781 !CDIR NODEP 
    782683            DO ji = 1, nbrem 
    783684               ii = nind_i(ji) 
     
    785686 
    786687               jl1 = zdonor(ii,ij,jl) 
    787                IF (jl1 .EQ. jl) THEN 
     688               IF (jl1 == jl) THEN 
    788689                  jl2 = jl+1 
    789690               ELSE             ! n1 = n+1 
     
    794695               e_i(ii,ij,jk,jl1) =  e_i(ii,ij,jk,jl1) - zdeice 
    795696               e_i(ii,ij,jk,jl2) =  e_i(ii,ij,jk,jl2) + zdeice  
    796             END DO              ! ji 
    797          END DO                 ! jk 
     697            END DO 
     698         END DO 
    798699 
    799700      END DO                   ! boundaries, 1 to ncat-1 
     
    809710                  ht_i(ji,jj,jl)  =  v_i   (ji,jj,jl) / a_i(ji,jj,jl)  
    810711                  t_su(ji,jj,jl)  =  zaTsfn(ji,jj,jl) / a_i(ji,jj,jl)  
    811                   rswitch         =  1.0 - MAX(0.0,SIGN(1.0,-v_s(ji,jj,jl)+epsi10)) !0 if no ice and 1 if yes 
     712                  rswitch         =  1.0 - MAX( 0.0, SIGN( 1.0, -v_s(ji,jj,jl) + epsi10 ) ) !0 if no ice and 1 if yes 
    812713               ELSE 
    813714                  ht_i(ji,jj,jl)  = 0._wp 
    814                   t_su(ji,jj,jl)  = rtt 
     715                  t_su(ji,jj,jl)  = rt0 
    815716               ENDIF 
    816             END DO                 ! ji 
    817          END DO                 ! jj 
    818       END DO                    ! jl 
     717            END DO 
     718         END DO 
     719      END DO 
    819720      ! 
    820721      CALL wrk_dealloc( jpi,jpj,jpl, zaTsfn ) 
     
    926827                  zdvice(ji,jj,jl)  = v_i(ji,jj,jl) - ( a_i(ji,jj,jl) - zdaice(ji,jj,jl) ) * ( hi_max(jl) - epsi10 ) 
    927828               ENDIF 
    928             END DO                 ! ji 
    929          END DO                 ! jj 
     829            END DO 
     830         END DO 
    930831         IF(lk_mpp)   CALL mpp_max( zshiftflag ) 
    931832 
     
    951852         zshiftflag = 0 
    952853 
    953 !clem-change 
    954854         DO jj = 1, jpj 
    955855            DO ji = 1, jpi 
     
    961861                  zdvice(ji,jj,jl) = v_i(ji,jj,jl+1) 
    962862               ENDIF 
    963             END DO                 ! ji 
    964          END DO                 ! jj 
     863            END DO 
     864         END DO 
    965865 
    966866         IF(lk_mpp)   CALL mpp_max( zshiftflag ) 
     
    973873            zdvice(:,:,jl) = 0._wp 
    974874         ENDIF 
    975 !clem-change 
    976875 
    977876!         ! clem-change begin: why not doing that? 
     
    982881!                  a_i (ji,jj,jl+1) = v_i(ji,jj,jl+1) / ht_i(ji,jj,jl+1)  
    983882!               ENDIF 
    984 !            END DO                 ! ji 
    985 !         END DO                 ! jj 
     883!            END DO 
     884!         END DO 
    986885         ! clem-change end 
    987886 
    988       END DO                    ! jl 
     887      END DO 
    989888 
    990889      !------------------------------------------------------------------------------ 
     
    1013912   !!---------------------------------------------------------------------- 
    1014913CONTAINS 
    1015    SUBROUTINE lim_itd_th           ! Empty routines 
    1016    END SUBROUTINE lim_itd_th 
    1017    SUBROUTINE lim_itd_th_ini 
    1018    END SUBROUTINE lim_itd_th_ini 
    1019914   SUBROUTINE lim_itd_th_rem 
    1020915   END SUBROUTINE lim_itd_th_rem 
Note: See TracChangeset for help on using the changeset viewer.