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/icevar.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/icevar.F90

    r8559 r8563  
    1515   !!                        - oa_i (jpi,jpj,jpl) 
    1616   !!                 VEQV : equivalent variables sometimes used in the model 
    17    !!                        - ht_i(jpi,jpj,jpl) 
    18    !!                        - ht_s(jpi,jpj,jpl) 
    19    !!                        - t_i (jpi,jpj,nlay_i,jpl) 
     17   !!                        - h_i(jpi,jpj,jpl) 
     18   !!                        - h_s(jpi,jpj,jpl) 
     19   !!                        - t_i(jpi,jpj,nlay_i,jpl) 
    2020   !!                        ... 
    2121   !!                 VAGG : aggregate variables, averaged/summed over all 
     
    174174      END WHERE 
    175175      ! 
    176       ht_i(:,:,:) = v_i (:,:,:) * z1_a_i(:,:,:)    !--- ice thickness 
     176      h_i(:,:,:) = v_i (:,:,:) * z1_a_i(:,:,:)    !--- ice thickness 
    177177 
    178178      zhmax    =          hi_max(jpl) 
    179179      z1_zhmax =  1._wp / hi_max(jpl)                
    180       WHERE( ht_i(:,:,jpl) > zhmax )               !--- bound ht_i by hi_max (i.e. 99 m) with associated update of ice area 
    181          ht_i  (:,:,jpl) = zhmax 
     180      WHERE( h_i(:,:,jpl) > zhmax )               !--- bound h_i by hi_max (i.e. 99 m) with associated update of ice area 
     181         h_i  (:,:,jpl) = zhmax 
    182182         a_i   (:,:,jpl) = v_i(:,:,jpl) * z1_zhmax  
    183          z1_a_i(:,:,jpl) = zhmax * z1_v_i(:,:,jpl)          ! NB: v_i always /=0 as ht_i > hi_max 
     183         z1_a_i(:,:,jpl) = zhmax * z1_v_i(:,:,jpl)          ! NB: v_i always /=0 as h_i > hi_max 
    184184      END WHERE 
    185185 
    186       ht_s(:,:,:) = v_s (:,:,:) * z1_a_i(:,:,:)    !--- snow thickness 
     186      h_s(:,:,:) = v_s (:,:,:) * z1_a_i(:,:,:)    !--- snow thickness 
    187187       
    188188      o_i(:,:,:)  = oa_i(:,:,:) * z1_a_i(:,:,:)    !--- ice age 
     
    253253      !!------------------------------------------------------------------- 
    254254      ! 
    255       v_i  (:,:,:) = ht_i(:,:,:) * a_i(:,:,:) 
    256       v_s  (:,:,:) = ht_s(:,:,:) * a_i(:,:,:) 
     255      v_i  (:,:,:) = h_i(:,:,:) * a_i(:,:,:) 
     256      v_s  (:,:,:) = h_s(:,:,:) * a_i(:,:,:) 
    257257      smv_i(:,:,:) = sm_i(:,:,:) * v_i(:,:,:) 
    258258      ! 
     
    305305         END DO 
    306306         !                                      ! Slope of the linear profile  
    307          WHERE( ht_i(:,:,:) > epsi20 )   ;   z_slope_s(:,:,:) = 2._wp * sm_i(:,:,:) / ht_i(:,:,:) 
     307         WHERE( h_i(:,:,:) > epsi20 )   ;   z_slope_s(:,:,:) = 2._wp * sm_i(:,:,:) / h_i(:,:,:) 
    308308         ELSEWHERE                       ;   z_slope_s(:,:,:) = 0._wp 
    309309         END WHERE 
     
    326326                  DO ji = 1, jpi 
    327327                     !                          ! linear profile with 0 surface value 
    328                      zs0 = z_slope_s(ji,jj,jl) * ( REAL(jk,wp) - 0.5_wp ) * ht_i(ji,jj,jl) * r1_nlay_i 
     328                     zs0 = z_slope_s(ji,jj,jl) * ( REAL(jk,wp) - 0.5_wp ) * h_i(ji,jj,jl) * r1_nlay_i 
    329329                     zs  = zalpha(ji,jj,jl) * zs0 + ( 1._wp - zalpha(ji,jj,jl) ) * sm_i(ji,jj,jl)     ! weighting the profile 
    330330                     s_i(ji,jj,jk,jl) = MIN( rn_simax, MAX( zs, rn_simin ) ) 
     
    389389         ! 
    390390         !                                      ! Slope of the linear profile  
    391          WHERE( ht_i_1d(1:nidx) > epsi20 )   ;   z_slope_s(1:nidx) = 2._wp * sm_i_1d(1:nidx) / ht_i_1d(1:nidx) 
     391         WHERE( h_i_1d(1:nidx) > epsi20 )   ;   z_slope_s(1:nidx) = 2._wp * sm_i_1d(1:nidx) / h_i_1d(1:nidx) 
    392392         ELSEWHERE                           ;   z_slope_s(1:nidx) = 0._wp 
    393393         END WHERE 
     
    404404            DO ji = 1, nidx 
    405405               !                          ! linear profile with 0 surface value 
    406                zs0 = z_slope_s(ji) * ( REAL(jk,wp) - 0.5_wp ) * ht_i_1d(ji) * r1_nlay_i 
     406               zs0 = z_slope_s(ji) * ( REAL(jk,wp) - 0.5_wp ) * h_i_1d(ji) * r1_nlay_i 
    407407               zs  = zalpha(ji) * zs0 + ( 1._wp - zalpha(ji) ) * sm_i_1d(ji) 
    408408               s_i_1d(ji,jk) = MIN( rn_simax , MAX( zs , rn_simin ) ) 
     
    447447         ! Zap ice energy and use ocean heat to melt ice 
    448448         !----------------------------------------------------------------- 
    449          WHERE( a_i(:,:,jl) > epsi20 )   ;   ht_i(:,:,jl) = v_i(:,:,jl) / a_i(:,:,jl) 
    450          ELSEWHERE                       ;   ht_i(:,:,jl) = 0._wp 
     449         WHERE( a_i(:,:,jl) > epsi20 )   ;   h_i(:,:,jl) = v_i(:,:,jl) / a_i(:,:,jl) 
     450         ELSEWHERE                       ;   h_i(:,:,jl) = 0._wp 
    451451         END WHERE 
    452452         ! 
    453          WHERE( a_i(:,:,jl) < epsi10 .OR. v_i(:,:,jl) < epsi10 .OR. ht_i(:,:,jl) < epsi10 )   ;   zswitch(:,:) = 0._wp 
     453         WHERE( a_i(:,:,jl) < epsi10 .OR. v_i(:,:,jl) < epsi10 .OR. h_i(:,:,jl) < epsi10 )   ;   zswitch(:,:) = 0._wp 
    454454         ELSEWHERE                                                                            ;   zswitch(:,:) = 1._wp 
    455455         END WHERE 
     
    490490               smv_i(ji,jj,jl) = smv_i(ji,jj,jl) * zswitch(ji,jj) 
    491491 
    492                ht_i (ji,jj,jl) = ht_i (ji,jj,jl) * zswitch(ji,jj) 
    493                ht_s (ji,jj,jl) = ht_s (ji,jj,jl) * zswitch(ji,jj) 
     492               h_i (ji,jj,jl) = h_i (ji,jj,jl) * zswitch(ji,jj) 
     493               h_s (ji,jj,jl) = h_s (ji,jj,jl) * zswitch(ji,jj) 
    494494 
    495495            END DO 
     
    519519 
    520520 
    521    SUBROUTINE ice_var_itd( zhti, zhts, zai, zht_i, zht_s, za_i ) 
     521   SUBROUTINE ice_var_itd( zhti, zhts, zati, zh_i, zh_s, za_i ) 
    522522      !!------------------------------------------------------------------- 
    523523      !!                ***  ROUTINE ice_var_itd   *** 
     
    543543      !! ** Arguments : zhti: 1-cat ice thickness 
    544544      !!                zhts: 1-cat snow depth 
    545       !!                zai : 1-cat ice concentration 
     545      !!                zati: 1-cat ice concentration 
    546546      !! 
    547547      !! ** Output    : jpl-cat  
     
    552552      INTEGER  :: ijpij, i_fill, jl0   
    553553      REAL(wp) :: zarg, zV, zconv, zdh, zdv 
    554       REAL(wp), DIMENSION(:),   INTENT(in)    ::   zhti, zhts, zai    ! input ice/snow variables 
    555       REAL(wp), DIMENSION(:,:), INTENT(inout) ::   zht_i, zht_s, za_i ! output ice/snow variables 
     554      REAL(wp), DIMENSION(:),   INTENT(in)    ::   zhti, zhts, zati    ! input ice/snow variables 
     555      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   zh_i, zh_s, za_i ! output ice/snow variables 
    556556      INTEGER , DIMENSION(4)                  ::   itest 
    557557      !!------------------------------------------------------------------- 
     
    564564      ! volume and area conservation, positivity and ice categories bounds 
    565565      ijpij = SIZE( zhti , 1 ) 
    566       zht_i(1:ijpij,1:jpl) = 0._wp 
    567       zht_s(1:ijpij,1:jpl) = 0._wp 
     566      zh_i(1:ijpij,1:jpl) = 0._wp 
     567      zh_s(1:ijpij,1:jpl) = 0._wp 
    568568      za_i (1:ijpij,1:jpl) = 0._wp 
    569569 
     
    587587               i_fill = i_fill - 1 
    588588               ! 
    589                zht_i(ji,1:jpl) = 0._wp 
     589               zh_i(ji,1:jpl) = 0._wp 
    590590               za_i (ji,1:jpl) = 0._wp 
    591591               itest(:)        = 0       
    592592                
    593593               IF ( i_fill == 1 ) THEN      !-- case very thin ice: fill only category 1 
    594                   zht_i(ji,1) = zhti(ji) 
    595                   za_i (ji,1) = zai (ji) 
     594                  zh_i(ji,1) = zhti(ji) 
     595                  za_i (ji,1) = zati (ji) 
    596596               ELSE                         !-- case ice is thicker: fill categories >1 
    597597                  ! thickness 
    598598                  DO jl = 1, i_fill - 1 
    599                      zht_i(ji,jl) = hi_mean(jl) 
     599                     zh_i(ji,jl) = hi_mean(jl) 
    600600                  END DO 
    601601                   
    602602                  ! concentration 
    603                   za_i(ji,jl0) = zai(ji) / SQRT(REAL(jpl)) 
     603                  za_i(ji,jl0) = zati(ji) / SQRT(REAL(jpl)) 
    604604                  DO jl = 1, i_fill - 1 
    605605                     IF ( jl /= jl0 ) THEN 
    606                         zarg        = ( zht_i(ji,jl) - zhti(ji) ) / ( zhti(ji) * 0.5_wp ) 
     606                        zarg        = ( zh_i(ji,jl) - zhti(ji) ) / ( zhti(ji) * 0.5_wp ) 
    607607                        za_i(ji,jl) =   za_i (ji,jl0) * EXP(-zarg**2) 
    608608                     ENDIF 
     
    610610                   
    611611                  ! last category 
    612                   za_i(ji,i_fill) = zai(ji) - SUM( za_i(ji,1:i_fill-1) ) 
    613                   zV = SUM( za_i(ji,1:i_fill-1) * zht_i(ji,1:i_fill-1) ) 
    614                   zht_i(ji,i_fill) = ( zhti(ji) * zai(ji) - zV ) / MAX( za_i(ji,i_fill), epsi10 )  
     612                  za_i(ji,i_fill) = zati(ji) - SUM( za_i(ji,1:i_fill-1) ) 
     613                  zV = SUM( za_i(ji,1:i_fill-1) * zh_i(ji,1:i_fill-1) ) 
     614                  zh_i(ji,i_fill) = ( zhti(ji) * zati(ji) - zV ) / MAX( za_i(ji,i_fill), epsi10 )  
    615615                   
    616616                  ! clem: correction if concentration of upper cat is greater than lower cat 
     
    619619                     DO jl = jpl, jl0+1, -1 
    620620                        IF ( za_i(ji,jl) > za_i(ji,jl-1) ) THEN 
    621                            zdv = zht_i(ji,jl) * za_i(ji,jl) 
    622                            zht_i(ji,jl    ) = 0._wp 
     621                           zdv = zh_i(ji,jl) * za_i(ji,jl) 
     622                           zh_i(ji,jl    ) = 0._wp 
    623623                           za_i (ji,jl    ) = 0._wp 
    624624                           za_i (ji,1:jl-1) = za_i(ji,1:jl-1) + zdv / MAX( REAL(jl-1) * zhti(ji), epsi10 ) 
     
    630630             
    631631               ! Compatibility tests 
    632                zconv = ABS( zai(ji) - SUM( za_i(ji,1:jpl) ) )  
     632               zconv = ABS( zati(ji) - SUM( za_i(ji,1:jpl) ) )  
    633633               IF ( zconv < epsi06 ) itest(1) = 1                                        ! Test 1: area conservation 
    634634             
    635                zconv = ABS( zhti(ji)*zai(ji) - SUM( za_i(ji,1:jpl)*zht_i(ji,1:jpl) ) ) 
     635               zconv = ABS( zhti(ji)*zati(ji) - SUM( za_i(ji,1:jpl)*zh_i(ji,1:jpl) ) ) 
    636636               IF ( zconv < epsi06 ) itest(2) = 1                                        ! Test 2: volume conservation 
    637637                
    638                IF ( zht_i(ji,i_fill) >= hi_max(i_fill-1) ) itest(3) = 1                  ! Test 3: thickness of the last category is in-bounds ? 
     638               IF ( zh_i(ji,i_fill) >= hi_max(i_fill-1) ) itest(3) = 1                  ! Test 3: thickness of the last category is in-bounds ? 
    639639                
    640640               itest(4) = 1 
     
    652652         DO ji = 1, ijpij 
    653653            IF( za_i(ji,jl) > 0._wp ) THEN 
    654                zht_s(ji,jl) = zht_i(ji,jl) * ( zhts(ji) / zhti(ji) ) 
     654               zh_s(ji,jl) = zh_i(ji,jl) * ( zhts(ji) / zhti(ji) ) 
    655655               ! In case snow load is in excess that would lead to transformation from snow to ice 
    656656               ! Then, transfer the snow excess into the ice (different from icethd_dh) 
    657                zdh = MAX( 0._wp, ( rhosn * zht_s(ji,jl) + ( rhoic - rau0 ) * zht_i(ji,jl) ) * r1_rau0 )  
    658                ! recompute ht_i, ht_s avoiding out of bounds values 
    659                zht_i(ji,jl) = MIN( hi_max(jl), zht_i(ji,jl) + zdh ) 
    660                zht_s(ji,jl) = MAX( 0._wp, zht_s(ji,jl) - zdh * rhoic * r1_rhosn ) 
     657               zdh = MAX( 0._wp, ( rhosn * zh_s(ji,jl) + ( rhoic - rau0 ) * zh_i(ji,jl) ) * r1_rau0 )  
     658               ! recompute h_i, h_s avoiding out of bounds values 
     659               zh_i(ji,jl) = MIN( hi_max(jl), zh_i(ji,jl) + zdh ) 
     660               zh_s(ji,jl) = MAX( 0._wp, zh_s(ji,jl) - zdh * rhoic * r1_rhosn ) 
    661661            ENDIF 
    662662         END DO 
Note: See TracChangeset for help on using the changeset viewer.