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 8563 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90 – NEMO

Ignore:
Timestamp:
2017-09-26T15:24:17+02:00 (7 years ago)
Author:
clem
Message:

change variable names (ht_s => h_s & ht_i => h_i)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90

    r8534 r8563  
    101101         zhbnew(:,:) = 0._wp 
    102102 
    103          CALL tab_3d_2d( nidx, idxice(1:nidx), ht_i_2d (1:nidx,1:jpl), ht_i   ) 
    104          CALL tab_3d_2d( nidx, idxice(1:nidx), ht_ib_2d(1:nidx,1:jpl), ht_i_b ) 
     103         CALL tab_3d_2d( nidx, idxice(1:nidx), h_i_2d (1:nidx,1:jpl), h_i   ) 
     104         CALL tab_3d_2d( nidx, idxice(1:nidx), h_ib_2d(1:nidx,1:jpl), h_i_b ) 
    105105         CALL tab_3d_2d( nidx, idxice(1:nidx), a_i_2d  (1:nidx,1:jpl), a_i    ) 
    106106         CALL tab_3d_2d( nidx, idxice(1:nidx), a_ib_2d (1:nidx,1:jpl), a_i_b  ) 
     
    109109            ! Compute thickness change in each ice category 
    110110            DO ji = 1, nidx 
    111                zdhice(ji,jl) = ht_i_2d(ji,jl) - ht_ib_2d(ji,jl) 
     111               zdhice(ji,jl) = h_i_2d(ji,jl) - h_ib_2d(ji,jl) 
    112112            END DO 
    113113         END DO 
     
    119119               ! 
    120120               ! --- New boundary: Hn* = Hn + Fn*dt --- ! 
    121                !     Fn*dt = ( fn + (fn+1 - fn)/(hn+1 - hn) * (Hn - hn) ) * dt = zdhice + zslope * (Hmax - ht_i_b) 
     121               !     Fn*dt = ( fn + (fn+1 - fn)/(hn+1 - hn) * (Hn - hn) ) * dt = zdhice + zslope * (Hmax - h_i_b) 
    122122               ! 
    123123               IF    ( a_ib_2d(ji,jl) >  epsi10 .AND. a_ib_2d(ji,jl+1) >  epsi10 ) THEN   ! a(jl+1) & a(jl) /= 0 
    124                   zslope           = ( zdhice(ji,jl+1) - zdhice(ji,jl) ) / ( ht_ib_2d(ji,jl+1) - ht_ib_2d(ji,jl) ) 
    125                   zhbnew(ji,jl) = hi_max(jl) + zdhice(ji,jl) + zslope * ( hi_max(jl) - ht_ib_2d(ji,jl) ) 
     124                  zslope           = ( zdhice(ji,jl+1) - zdhice(ji,jl) ) / ( h_ib_2d(ji,jl+1) - h_ib_2d(ji,jl) ) 
     125                  zhbnew(ji,jl) = hi_max(jl) + zdhice(ji,jl) + zslope * ( hi_max(jl) - h_ib_2d(ji,jl) ) 
    126126               ELSEIF( a_ib_2d(ji,jl) >  epsi10 .AND. a_ib_2d(ji,jl+1) <= epsi10 ) THEN   ! a(jl+1)=0 => Hn* = Hn + fn*dt 
    127127                  zhbnew(ji,jl) = hi_max(jl) + zdhice(ji,jl) 
     
    136136               !    Note: hn(t+1) must not be too close to either HR or HL otherwise a division by nearly 0 is possible  
    137137               !          in ice_itd_glinear in the case (HR-HL) = 3(Hice - HL) or = 3(HR - Hice) 
    138                IF( a_i_2d(ji,jl  ) > epsi10 .AND. ht_i_2d(ji,jl  ) > ( zhbnew(ji,jl) - epsi10 ) )   idxice(ji) = 0 
    139                IF( a_i_2d(ji,jl+1) > epsi10 .AND. ht_i_2d(ji,jl+1) < ( zhbnew(ji,jl) + epsi10 ) )   idxice(ji) = 0 
     138               IF( a_i_2d(ji,jl  ) > epsi10 .AND. h_i_2d(ji,jl  ) > ( zhbnew(ji,jl) - epsi10 ) )   idxice(ji) = 0 
     139               IF( a_i_2d(ji,jl+1) > epsi10 .AND. h_i_2d(ji,jl+1) < ( zhbnew(ji,jl) + epsi10 ) )   idxice(ji) = 0 
    140140                
    141141               ! 2) Hn-1 < Hn* < Hn+1   
     
    149149         DO ji = 1, nidx 
    150150            IF( a_i_2d(ji,jpl) > epsi10 ) THEN 
    151                zhbnew(ji,jpl) = MAX( hi_max(jpl-1), 3._wp * ht_i_2d(ji,jpl) - 2._wp * zhbnew(ji,jpl-1) ) 
     151               zhbnew(ji,jpl) = MAX( hi_max(jpl-1), 3._wp * h_i_2d(ji,jpl) - 2._wp * zhbnew(ji,jpl-1) ) 
    152152            ELSE 
    153153               zhbnew(ji,jpl) = hi_max(jpl)   
     
    158158            !    h1(t) must not be too close to either HR or HL otherwise a division by nearly 0 is possible  
    159159            !    in ice_itd_glinear in the case (HR-HL) = 3(Hice - HL) or = 3(HR - Hice) 
    160             IF( ht_ib_2d(ji,1) < ( hi_max(0) + epsi10 ) )   idxice(ji) = 0 
    161             IF( ht_ib_2d(ji,1) > ( hi_max(1) - epsi10 ) )   idxice(ji) = 0 
     160            IF( h_ib_2d(ji,1) < ( hi_max(0) + epsi10 ) )   idxice(ji) = 0 
     161            IF( h_ib_2d(ji,1) > ( hi_max(1) - epsi10 ) )   idxice(ji) = 0 
    162162         END DO 
    163163         ! 
     
    189189         DO jl = 1, jpl 
    190190            ! 
    191             CALL tab_2d_1d( nidx, idxice(1:nidx), ht_ib_1d(1:nidx), ht_i_b(:,:,jl) ) 
    192             CALL tab_2d_1d( nidx, idxice(1:nidx), ht_i_1d (1:nidx), ht_i(:,:,jl)   ) 
     191            CALL tab_2d_1d( nidx, idxice(1:nidx), h_ib_1d(1:nidx), h_i_b(:,:,jl) ) 
     192            CALL tab_2d_1d( nidx, idxice(1:nidx), h_i_1d (1:nidx), h_i(:,:,jl)   ) 
    193193            CALL tab_2d_1d( nidx, idxice(1:nidx), a_i_1d  (1:nidx), a_i(:,:,jl)    ) 
    194194            CALL tab_2d_1d( nidx, idxice(1:nidx), v_i_1d  (1:nidx), v_i(:,:,jl)    ) 
     
    197197               !   
    198198               ! --- g(h) for category 1 --- ! 
    199                CALL ice_itd_glinear( zhb0(1:nidx)  , zhb1(1:nidx)  , ht_ib_1d(1:nidx)  , a_i_1d(1:nidx)  ,  &   ! in 
     199               CALL ice_itd_glinear( zhb0(1:nidx)  , zhb1(1:nidx)  , h_ib_1d(1:nidx)  , a_i_1d(1:nidx)  ,  &   ! in 
    200200                  &                  g0  (1:nidx,1), g1  (1:nidx,1), hL      (1:nidx,1), hR    (1:nidx,1)   )   ! out 
    201201                  ! 
     
    205205                  IF( a_i_1d(ji) > epsi10 ) THEN 
    206206                     ! 
    207                      zdh0 =  ht_i_1d(ji) - ht_ib_1d(ji)                 
     207                     zdh0 =  h_i_1d(ji) - h_ib_1d(ji)                 
    208208                     IF( zdh0 < 0.0 ) THEN      !remove area from category 1 
    209209                        zdh0 = MIN( -zdh0, hi_max(1) ) 
     
    215215                           zx2    = 0.5 * zetamax * zetamax  
    216216                           zda0   = g1(ji,1) * zx2 + g0(ji,1) * zx1                        ! ice area removed 
    217                            zdamax = a_i_1d(ji) * (1.0 - ht_i_1d(ji) / ht_ib_1d(ji) ) ! Constrain new thickness <= ht_i                 
     217                           zdamax = a_i_1d(ji) * (1.0 - h_i_1d(ji) / h_ib_1d(ji) ) ! Constrain new thickness <= h_i                 
    218218                           zda0   = MIN( zda0, zdamax )                                                  ! ice area lost due to melting  
    219219                           !     of thin ice (zdamax > 0) 
    220220                           ! Remove area, conserving volume 
    221                            ht_i_1d(ji) = ht_i_1d(ji) * a_i_1d(ji) / ( a_i_1d(ji) - zda0 ) 
     221                           h_i_1d(ji) = h_i_1d(ji) * a_i_1d(ji) / ( a_i_1d(ji) - zda0 ) 
    222222                           a_i_1d(ji)  = a_i_1d(ji) - zda0 
    223                            v_i_1d(ji)  = a_i_1d(ji) * ht_i_1d(ji) ! clem-useless ? 
     223                           v_i_1d(ji)  = a_i_1d(ji) * h_i_1d(ji) ! clem-useless ? 
    224224                        ENDIF 
    225225                        ! 
     
    233233               END DO 
    234234               ! 
    235                CALL tab_1d_2d( nidx, idxice(1:nidx), ht_i_1d (1:nidx), ht_i(:,:,jl)   ) 
     235               CALL tab_1d_2d( nidx, idxice(1:nidx), h_i_1d (1:nidx), h_i(:,:,jl)   ) 
    236236               CALL tab_1d_2d( nidx, idxice(1:nidx), a_i_1d  (1:nidx), a_i(:,:,jl)    ) 
    237237               CALL tab_1d_2d( nidx, idxice(1:nidx), v_i_1d  (1:nidx), v_i(:,:,jl)    ) 
     
    240240            ! 
    241241            ! --- g(h) for each thickness category --- !   
    242             CALL ice_itd_glinear( zhbnew(1:nidx,jl-1), zhbnew(1:nidx,jl), ht_i_1d(1:nidx)   , a_i_1d(1:nidx)   ,  &   ! in 
     242            CALL ice_itd_glinear( zhbnew(1:nidx,jl-1), zhbnew(1:nidx,jl), h_i_1d(1:nidx)   , a_i_1d(1:nidx)   ,  &   ! in 
    243243               &                  g0    (1:nidx,jl  ), g1    (1:nidx,jl), hL     (1:nidx,jl), hR    (1:nidx,jl)   )   ! out 
    244244            ! 
     
    284284          
    285285         !---------------------------------------------------------------------------------------------- 
    286          ! 7) Make sure ht_i >= minimum ice thickness hi_min 
     286         ! 7) Make sure h_i >= minimum ice thickness hi_min 
    287287         !---------------------------------------------------------------------------------------------- 
    288          CALL tab_2d_1d( nidx, idxice(1:nidx), ht_i_1d (1:nidx), ht_i(:,:,1)   ) 
     288         CALL tab_2d_1d( nidx, idxice(1:nidx), h_i_1d (1:nidx), h_i(:,:,1)   ) 
    289289         CALL tab_2d_1d( nidx, idxice(1:nidx), a_i_1d  (1:nidx), a_i(:,:,1)    ) 
    290290         CALL tab_2d_1d( nidx, idxice(1:nidx), a_ip_1d (1:nidx), a_ip(:,:,1)   ) 
    291291          
    292292         DO ji = 1, nidx 
    293             IF ( a_i_1d(ji) > epsi10 .AND. ht_i_1d(ji) < rn_himin ) THEN 
    294                a_i_1d (ji) = a_i_1d(ji) * ht_i_1d(ji) / rn_himin  
     293            IF ( a_i_1d(ji) > epsi10 .AND. h_i_1d(ji) < rn_himin ) THEN 
     294               a_i_1d (ji) = a_i_1d(ji) * h_i_1d(ji) / rn_himin  
    295295               ! MV MP 2016 
    296296               IF ( nn_pnd_scheme > 0 ) THEN 
    297                   a_ip_1d(ji) = a_ip_1d(ji) * ht_i_1d(ji) / rn_himin 
     297                  a_ip_1d(ji) = a_ip_1d(ji) * h_i_1d(ji) / rn_himin 
    298298               ENDIF 
    299299               ! END MV MP 2016 
    300                ht_i_1d(ji) = rn_himin 
     300               h_i_1d(ji) = rn_himin 
    301301            ENDIF 
    302302         END DO 
    303303         ! 
    304          CALL tab_1d_2d( nidx, idxice(1:nidx), ht_i_1d (1:nidx), ht_i(:,:,1)   ) 
     304         CALL tab_1d_2d( nidx, idxice(1:nidx), h_i_1d (1:nidx), h_i(:,:,1)   ) 
    305305         CALL tab_1d_2d( nidx, idxice(1:nidx), a_i_1d  (1:nidx), a_i(:,:,1)    ) 
    306306         CALL tab_1d_2d( nidx, idxice(1:nidx), a_ip_1d (1:nidx), a_ip(:,:,1)   ) 
     
    392392      !!------------------------------------------------------------------ 
    393393          
    394       CALL tab_3d_2d( nidx, idxice(1:nidx), ht_i_2d (1:nidx,1:jpl), ht_i   ) 
     394      CALL tab_3d_2d( nidx, idxice(1:nidx), h_i_2d (1:nidx,1:jpl), h_i   ) 
    395395      CALL tab_3d_2d( nidx, idxice(1:nidx), a_i_2d  (1:nidx,1:jpl), a_i    ) 
    396396      CALL tab_3d_2d( nidx, idxice(1:nidx), v_i_2d  (1:nidx,1:jpl), v_i    ) 
     
    518518      !------------------------------------------------------------------------------- 
    519519      WHERE( a_i_2d(1:nidx,:) >= epsi20 ) 
    520          ht_i_2d(1:nidx,:)  =  v_i_2d(1:nidx,:) / a_i_2d(1:nidx,:)  
     520         h_i_2d(1:nidx,:)  =  v_i_2d(1:nidx,:) / a_i_2d(1:nidx,:)  
    521521         t_su_2d(1:nidx,:)  =  zaTsfn(1:nidx,:) / a_i_2d(1:nidx,:)  
    522522      ELSEWHERE 
    523          ht_i_2d(1:nidx,:)  = 0._wp 
     523         h_i_2d(1:nidx,:)  = 0._wp 
    524524         t_su_2d(1:nidx,:)  = rt0 
    525525      END WHERE 
    526526      ! 
    527       CALL tab_2d_3d( nidx, idxice(1:nidx), ht_i_2d (1:nidx,1:jpl), ht_i  ) 
     527      CALL tab_2d_3d( nidx, idxice(1:nidx), h_i_2d (1:nidx,1:jpl), h_i  ) 
    528528      CALL tab_2d_3d( nidx, idxice(1:nidx), a_i_2d  (1:nidx,1:jpl), a_i   ) 
    529529      CALL tab_2d_3d( nidx, idxice(1:nidx), v_i_2d  (1:nidx,1:jpl), v_i   ) 
     
    574574         END DO 
    575575         ! 
    576 !!clem   CALL tab_2d_1d( nidx, idxice(1:nidx), ht_i_1d (1:nidx), ht_i(:,:,jl)   ) 
     576!!clem   CALL tab_2d_1d( nidx, idxice(1:nidx), h_i_1d (1:nidx), h_i(:,:,jl)   ) 
    577577         CALL tab_2d_1d( nidx, idxice(1:nidx), a_i_1d  (1:nidx), a_i(:,:,jl)    ) 
    578578         CALL tab_2d_1d( nidx, idxice(1:nidx), v_i_1d  (1:nidx), v_i(:,:,jl)    ) 
     
    582582            ! how much of a_i you send in cat sup is somewhat arbitrary 
    583583!!clem: these do not work properly after a restart (I do not know why) 
    584 !!          zdaice(ji,jl)  = a_i_1d(ji) * ( ht_i_1d(ji) - hi_max(jl) + epsi10 ) / ht_i_1d(ji)   
     584!!          zdaice(ji,jl)  = a_i_1d(ji) * ( h_i_1d(ji) - hi_max(jl) + epsi10 ) / h_i_1d(ji)   
    585585!!          zdvice(ji,jl)  = v_i_1d(ji) - ( a_i_1d(ji) - zdaice(ji,jl) ) * ( hi_max(jl) - epsi10 ) 
    586586!!clem: these do not work properly after a restart (I do not know why) 
Note: See TracChangeset for help on using the changeset viewer.