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 – NEMO

Changeset 8563


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)

Location:
branches/2017/dev_r8183_ICEMODEL/NEMOGCM
Files:
27 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8517 r8563  
    564564! for lim3 
    565565!   bn_a_i     = 'amm12_bdyT_ice',         24        , 'ileadfra',    .true.   , .false. ,  'daily'  ,    ''    ,   ''     ,     '' 
    566 !   bn_ht_i    = 'amm12_bdyT_ice',         24        , 'iicethic',    .true.   , .false. ,  'daily'  ,    ''    ,   ''     ,     '' 
    567 !   bn_ht_s    = 'amm12_bdyT_ice',         24        , 'isnowthi',    .true.   , .false. ,  'daily'  ,    ''    ,   ''     ,     '' 
     566!   bn_h_i    = 'amm12_bdyT_ice',         24        , 'iicethic',    .true.   , .false. ,  'daily'  ,    ''    ,   ''     ,     '' 
     567!   bn_h_s    = 'amm12_bdyT_ice',         24        , 'isnowthi',    .true.   , .false. ,  'daily'  ,    ''    ,   ''     ,     '' 
    568568 
    569569   cn_dir      = 'bdydta/' !  root directory for the location of the bulk files 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r8562 r8563  
    118118   !!-------------|-------------|---------------------------------|-------| 
    119119   !!                                                                     | 
    120    !! ht_i        | ht_i_1d     |    Ice thickness                | m     | 
    121    !! ht_s        ! ht_s_1d     |    Snow depth                   | m     | 
     120   !! h_i        | h_i_1d     |    Ice thickness                | m     | 
     121   !! h_s        ! h_s_1d     |    Snow depth                   | m     | 
    122122   !! sm_i        ! sm_i_1d     |    Sea ice bulk salinity        ! ppt   | 
    123123   !! s_i         ! s_i_1d      |    Sea ice salinity profile     ! ppt   | 
     
    312312   !!---------------------------------------------------------------------- 
    313313   !! Variables defined for each ice category 
    314    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ht_i      !: Ice thickness (m) 
     314   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   h_i      !: Ice thickness (m) 
    315315   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   a_i       !: Ice fractional areas (concentration) 
    316316   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   v_i       !: Ice volume per unit area (m) 
    317317   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   v_s       !: Snow volume per unit area(m) 
    318    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ht_s      !: Snow thickness (m) 
     318   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   h_s      !: Snow thickness (m) 
    319319   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   t_su      !: Sea-Ice Surface Temperature (K) 
    320320   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sm_i      !: Sea-Ice Bulk salinity (ppt) 
     
    375375   !! * Old values of global variables 
    376376   !!---------------------------------------------------------------------- 
    377    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   v_s_b, v_i_b, ht_s_b, ht_i_b  !: snow and ice volumes/thickness 
     377   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   v_s_b, v_i_b, h_s_b, h_i_b  !: snow and ice volumes/thickness 
    378378   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   a_i_b, smv_i_b, oa_i_b        !: 
    379379   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_s_b                         !: snow heat content 
     
    463463      ii = ii + 1 
    464464      ALLOCATE( ftr_ice(jpi,jpj,jpl) ,                                                 & 
    465          &      ht_i   (jpi,jpj,jpl) , a_i   (jpi,jpj,jpl) , v_i   (jpi,jpj,jpl) ,     & 
    466          &      v_s    (jpi,jpj,jpl) , ht_s  (jpi,jpj,jpl) , t_su  (jpi,jpj,jpl) ,     & 
     465         &      h_i   (jpi,jpj,jpl) , a_i   (jpi,jpj,jpl) , v_i   (jpi,jpj,jpl) ,     & 
     466         &      v_s    (jpi,jpj,jpl) , h_s  (jpi,jpj,jpl) , t_su  (jpi,jpj,jpl) ,     & 
    467467         &      sm_i   (jpi,jpj,jpl) , smv_i (jpi,jpj,jpl) , o_i   (jpi,jpj,jpl) ,     & 
    468468         &      oa_i   (jpi,jpj,jpl) , bv_i  (jpi,jpj,jpl) ,  STAT=ierr(ii) ) 
     
    512512      ! * Old values of global variables 
    513513      ii = ii + 1 
    514       ALLOCATE( v_s_b  (jpi,jpj,jpl) , v_i_b  (jpi,jpj,jpl) , ht_s_b(jpi,jpj,jpl)        , ht_i_b(jpi,jpj,jpl)        ,   & 
     514      ALLOCATE( v_s_b  (jpi,jpj,jpl) , v_i_b  (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl)        , h_i_b(jpi,jpj,jpl)        ,   & 
    515515         &      a_i_b  (jpi,jpj,jpl) , smv_i_b(jpi,jpj,jpl) , e_i_b (jpi,jpj,nlay_i,jpl) , e_s_b (jpi,jpj,nlay_s,jpl) ,   & 
    516516         &      oa_i_b (jpi,jpj,jpl)                                                     , STAT=ierr(ii) ) 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice1D.F90

    r8562 r8563  
    105105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_i_1d        !: <==> the 2D  a_i 
    106106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_ib_1d       !: <==> the 2D  a_i_b 
    107    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_i_1d       !: 
    108    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_ib_1d      !: 
    109    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_s_1d       !: 
     107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   h_i_1d       !: 
     108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   h_ib_1d      !: 
     109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   h_s_1d       !: 
    110110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_su         !: Surface Conduction flux  
    111111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_bo_i       !: Bottom  Conduction flux  
     
    153153   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   v_ip_2d  
    154154   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_su_2d  
    155    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ht_i_2d 
     155   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   h_i_2d 
    156156 
    157157   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   a_ib_2d 
    158    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ht_ib_2d 
     158   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   h_ib_2d 
    159159    
    160160   !!---------------------------------------------------------------------- 
     
    200200      ii = ii + 1 
    201201      ALLOCATE( t_su_1d  (jpij) , t_si_1d   (jpij) , a_i_1d  (jpij) , a_ib_1d(jpij) ,                  & 
    202          &      ht_i_1d  (jpij) , ht_ib_1d  (jpij) , ht_s_1d (jpij) , fc_su  (jpij) , fc_bo_i(jpij) ,  &     
     202         &      h_i_1d  (jpij) , h_ib_1d  (jpij) , h_s_1d (jpij) , fc_su  (jpij) , fc_bo_i(jpij) ,  &     
    203203         &      dh_s_tot (jpij) , dh_i_surf (jpij) , dh_i_sub(jpij) ,                                  &     
    204204         &      dh_i_bott(jpij) , dh_snowice(jpij) , sm_i_1d (jpij) , s_i_new(jpij) , & 
     
    218218      ! 
    219219      ii = ii + 1 
    220       ALLOCATE( a_i_2d(jpij,jpl) , a_ib_2d(jpij,jpl) , ht_i_2d(jpij,jpl) , ht_ib_2d(jpij,jpl) , & 
     220      ALLOCATE( a_i_2d(jpij,jpl) , a_ib_2d(jpij,jpl) , h_i_2d(jpij,jpl) , h_ib_2d(jpij,jpl) , & 
    221221         &      v_i_2d(jpij,jpl) ,v_s_2d(jpij,jpl) ,oa_i_2d(jpij,jpl) ,smv_i_2d(jpij,jpl) ,  & 
    222222         &      a_ip_2d(jpij,jpl) ,v_ip_2d(jpij,jpl) ,t_su_2d(jpij,jpl) ,  & 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icecor.F90

    r8534 r8563  
    7070         !                          !  thickness of the smallest category above himin    ! 
    7171         !                          !----------------------------------------------------- 
    72          WHERE( a_i(:,:,1) >= epsi20 )   ;   ht_i(:,:,1) = v_i (:,:,1) / a_i(:,:,1) 
    73          ELSEWHERE                       ;   ht_i(:,:,1) = 0._wp 
     72         WHERE( a_i(:,:,1) >= epsi20 )   ;   h_i(:,:,1) = v_i (:,:,1) / a_i(:,:,1) 
     73         ELSEWHERE                       ;   h_i(:,:,1) = 0._wp 
    7474         END WHERE 
    75          WHERE( ht_i(:,:,1) < rn_himin )     a_i (:,:,1) = a_i (:,:,1) * ht_i(:,:,1) / rn_himin 
     75         WHERE( h_i(:,:,1) < rn_himin )      a_i(:,:,1) = a_i (:,:,1) * h_i(:,:,1) / rn_himin 
    7676         ! 
    7777      ENDIF 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icectl.F90

    r8534 r8563  
    248248      DO jj = 1, jpj 
    249249         DO ji = 1, jpi 
    250             IF(   ht_i(ji,jj,jl)  >  50._wp   ) THEN 
     250            IF(   h_i(ji,jj,jl)  >  50._wp   ) THEN 
    251251               !CALL ice_prt( kt, ji, jj, 2, ' ALERTE 3 :   Very thick ice ' ) 
    252252               inb_alp(ialert_id) = inb_alp(ialert_id) + 1 
     
    469469                  WRITE(numout,*) ' - Category (', jl,')' 
    470470                  WRITE(numout,*) ' a_i           : ', a_i(ji,jj,jl) 
    471                   WRITE(numout,*) ' ht_i          : ', ht_i(ji,jj,jl) 
    472                   WRITE(numout,*) ' ht_s          : ', ht_s(ji,jj,jl) 
     471                  WRITE(numout,*) ' h_i           : ', h_i(ji,jj,jl) 
     472                  WRITE(numout,*) ' h_s           : ', h_s(ji,jj,jl) 
    473473                  WRITE(numout,*) ' v_i           : ', v_i(ji,jj,jl) 
    474474                  WRITE(numout,*) ' v_s           : ', v_s(ji,jj,jl) 
     
    520520                  WRITE(numout,*) ' - Category (',jl,')' 
    521521                  WRITE(numout,*) '   ~~~~~~~~         '  
    522                   WRITE(numout,*) ' ht_i       : ', ht_i(ji,jj,jl)             , ' ht_s       : ', ht_s(ji,jj,jl) 
     522                  WRITE(numout,*) ' h_i        : ', h_i(ji,jj,jl)              , ' h_s        : ', h_s(ji,jj,jl) 
    523523                  WRITE(numout,*) ' t_i        : ', t_i(ji,jj,1:nlay_i,jl) 
    524524                  WRITE(numout,*) ' t_su       : ', t_su(ji,jj,jl)             , ' t_s        : ', t_s(ji,jj,1,jl) 
     
    630630         CALL prt_ctl_info(' - Category : ', ivar1=jl) 
    631631         CALL prt_ctl_info('   ~~~~~~~~~~') 
    632          CALL prt_ctl(tab2d_1=ht_i       (:,:,jl)        , clinfo1= ' ht_i        : ') 
    633          CALL prt_ctl(tab2d_1=ht_s       (:,:,jl)        , clinfo1= ' ht_s        : ') 
     632         CALL prt_ctl(tab2d_1=h_i        (:,:,jl)        , clinfo1= ' h_i        : ') 
     633         CALL prt_ctl(tab2d_1=h_s        (:,:,jl)        , clinfo1= ' h_s        : ') 
    634634         CALL prt_ctl(tab2d_1=t_su       (:,:,jl)        , clinfo1= ' t_su        : ') 
    635635         CALL prt_ctl(tab2d_1=t_s        (:,:,1,jl)      , clinfo1= ' t_snow      : ') 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn.F90

    r8562 r8563  
    8585         tau_icebfr(:,:) = 0._wp 
    8686         DO jl = 1, jpl 
    87             WHERE( ht_i(:,:,jl) > ht_n(:,:) * rn_gamma )   tau_icebfr(:,:) = tau_icebfr(:,:) + a_i(:,:,jl) * rn_icebfr 
     87            WHERE( h_i(:,:,jl) > ht_n(:,:) * rn_gamma )   tau_icebfr(:,:) = tau_icebfr(:,:) + a_i(:,:,jl) * rn_icebfr 
    8888         END DO 
    8989         IF( iom_use('tau_icebfr') )   CALL iom_put( 'tau_icebfr', tau_icebfr )   
    9090      ENDIF 
    9191 
    92       zhmax(:,:,:) = ht_i_b(:,:,:)      !-- Record max of the surrounding 9-pts ice thick. (for CALL Hbig) 
     92      zhmax(:,:,:) = h_i_b(:,:,:)      !-- Record max of the surrounding 9-pts ice thick. (for CALL Hbig) 
    9393      DO jl = 1, jpl 
    9494         DO jj = 2, jpjm1 
    9595            DO ji = 2, jpim1 
    9696!!gm use of MAXVAL here is very probably less efficient than expending the 9 values 
    97                zhmax(ji,jj,jl) = MAX( epsi20, MAXVAL( ht_i_b(ji-1:ji+1,jj-1:jj+1,jl) ) ) 
     97               zhmax(ji,jj,jl) = MAX( epsi20, MAXVAL( h_i_b(ji-1:ji+1,jj-1:jj+1,jl) ) ) 
    9898            END DO 
    9999         END DO 
     
    166166                  IF ( ( zdv >  0.0 .AND. zh > phmax(ji,jj,jl) .AND. at_i_b(ji,jj) < 0.80 ) .OR. & 
    167167                     & ( zdv <= 0.0 .AND. zh > phmax(ji,jj,jl) ) ) THEN 
    168                      a_i (ji,jj,jl) = v_i(ji,jj,jl) / MIN( phmax(ji,jj,jl), hi_max(jpl) )   !-- bound ht_i to hi_max (99 m) 
     168                     a_i (ji,jj,jl) = v_i(ji,jj,jl) / MIN( phmax(ji,jj,jl), hi_max(jpl) )   !-- bound h_i to hi_max (99 m) 
    169169                  ENDIF 
    170170                  ! 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90

    r8534 r8563  
    130130 
    131131      ! --- cloud-sky and overcast-sky ice albedos --- ! 
    132       CALL ice_alb( t_su, ht_i, ht_s, a_ip_frac, h_ip, ln_pnd_rad, zalb_cs, zalb_os ) 
     132      CALL ice_alb( t_su, h_i, h_s, a_ip_frac, h_ip, ln_pnd_rad, zalb_cs, zalb_os ) 
    133133 
    134134      ! albedo depends on cloud fraction because of non-linear spectral effects 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceistate.F90

    r8550 r8563  
    285285               DO ji = 1, jpi 
    286286                  a_i(ji,jj,jl)   = zswitch(ji,jj) * za_i_ini(ji,jj,jl)                       ! concentration 
    287                   ht_i(ji,jj,jl)  = zswitch(ji,jj) * zh_i_ini(ji,jj,jl)                       ! ice thickness 
     287                  h_i(ji,jj,jl)  = zswitch(ji,jj) * zh_i_ini(ji,jj,jl)                       ! ice thickness 
    288288                  sm_i(ji,jj,jl)  = zswitch(ji,jj) * zsm_i_ini(ji,jj)                         ! salinity 
    289289                  o_i(ji,jj,jl)   = 0._wp                                                     ! age (0 day) 
     
    291291 
    292292                  IF( zht_i_ini(ji,jj) > 0._wp )THEN 
    293                     ht_s(ji,jj,jl)= ht_i(ji,jj,jl) * ( zht_s_ini(ji,jj) / zht_i_ini(ji,jj) )  ! snow depth 
     293                    h_s(ji,jj,jl)= h_i(ji,jj,jl) * ( zht_s_ini(ji,jj) / zht_i_ini(ji,jj) )  ! snow depth 
    294294                  ELSE 
    295                     ht_s(ji,jj,jl)= 0._wp 
     295                    h_s(ji,jj,jl)= 0._wp 
    296296                  ENDIF 
    297297 
    298                   ! This case below should not be used if (ht_s/ht_i) is ok in namelist 
     298                  ! This case below should not be used if (h_s/h_i) is ok in namelist 
    299299                  ! In case snow load is in excess that would lead to transformation from snow to ice 
    300300                  ! Then, transfer the snow excess into the ice (different from icethd_dh) 
    301                   zdh = MAX( 0._wp, ( rhosn * ht_s(ji,jj,jl) + ( rhoic - rau0 ) * ht_i(ji,jj,jl) ) * r1_rau0 )  
    302                   ! recompute ht_i, ht_s avoiding out of bounds values 
    303                   ht_i(ji,jj,jl) = MIN( hi_max(jl), ht_i(ji,jj,jl) + zdh ) 
    304                   ht_s(ji,jj,jl) = MAX( 0._wp, ht_s(ji,jj,jl) - zdh * rhoic * r1_rhosn ) 
     301                  zdh = MAX( 0._wp, ( rhosn * h_s(ji,jj,jl) + ( rhoic - rau0 ) * h_i(ji,jj,jl) ) * r1_rau0 )  
     302                  ! recompute h_i, h_s avoiding out of bounds values 
     303                  h_i(ji,jj,jl) = MIN( hi_max(jl), h_i(ji,jj,jl) + zdh ) 
     304                  h_s(ji,jj,jl) = MAX( 0._wp, h_s(ji,jj,jl) - zdh * rhoic * r1_rhosn ) 
    305305 
    306306                  ! ice volume, salt content, age content 
    307                   v_i(ji,jj,jl)   = ht_i(ji,jj,jl) * a_i(ji,jj,jl)              ! ice volume 
    308                   v_s(ji,jj,jl)   = ht_s(ji,jj,jl) * a_i(ji,jj,jl)              ! snow volume 
     307                  v_i(ji,jj,jl)   = h_i(ji,jj,jl) * a_i(ji,jj,jl)              ! ice volume 
     308                  v_s(ji,jj,jl)   = h_s(ji,jj,jl) * a_i(ji,jj,jl)              ! snow volume 
    309309                  smv_i(ji,jj,jl) = MIN( sm_i(ji,jj,jl) , sss_m(ji,jj) ) * v_i(ji,jj,jl) ! salt content 
    310310                  oa_i(ji,jj,jl)  = o_i(ji,jj,jl) * a_i(ji,jj,jl)               ! age content 
     
    381381         smv_i(:,:,:) = 0._wp 
    382382         oa_i (:,:,:) = 0._wp 
    383          ht_i (:,:,:) = 0._wp 
    384          ht_s (:,:,:) = 0._wp 
     383         h_i (:,:,:) = 0._wp 
     384         h_s (:,:,:) = 0._wp 
    385385         sm_i (:,:,:) = 0._wp 
    386386         o_i  (:,:,:) = 0._wp 
  • 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) 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90

    r8562 r8563  
    146146         ! 
    147147         !                          !==  previous lead fraction and ice volume for flux calculations 
    148          CALL ice_var_glo2eqv            ! ht_i and ht_s for ice albedo calculation 
     148         CALL ice_var_glo2eqv            ! h_i and h_s for ice albedo calculation 
    149149         CALL ice_var_agg(1)             ! at_i for coupling  
    150150         CALL store_fields               ! Store now ice values 
     
    358358      e_i_b  (:,:,:,:) = e_i  (:,:,:,:)   ! ice thermal energy 
    359359      WHERE( a_i_b(:,:,:) >= epsi20 ) 
    360          ht_i_b(:,:,:) = v_i_b (:,:,:) / a_i_b(:,:,:)   ! ice thickness 
    361          ht_s_b(:,:,:) = v_s_b (:,:,:) / a_i_b(:,:,:)   ! snw thickness 
     360         h_i_b(:,:,:) = v_i_b (:,:,:) / a_i_b(:,:,:)   ! ice thickness 
     361         h_s_b(:,:,:) = v_s_b (:,:,:) / a_i_b(:,:,:)   ! snw thickness 
    362362      ELSEWHERE 
    363          ht_i_b(:,:,:) = 0._wp 
    364          ht_s_b(:,:,:) = 0._wp 
     363         h_i_b(:,:,:) = 0._wp 
     364         h_s_b(:,:,:) = 0._wp 
    365365      END WHERE 
    366366       
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90

    r8534 r8563  
    302302             
    303303            ! mask temperature 
    304             rswitch       = 1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_i_1d(ji) ) )  
     304            rswitch       = 1._wp - MAX( 0._wp , SIGN( 1._wp , - h_i_1d(ji) ) )  
    305305            t_i_1d(ji,jk) = rswitch * t_i_1d(ji,jk) + ( 1._wp - rswitch ) * rt0 
    306306         END DO  
     
    326326         zdh_mel = MIN( 0._wp, dh_i_surf(ji) + dh_i_bott(ji) + dh_snowice(ji) + dh_i_sub(ji) ) 
    327327         IF( zdh_mel < 0._wp .AND. a_i_1d(ji) > 0._wp )  THEN 
    328             zvi          = a_i_1d(ji) * ht_i_1d(ji) 
    329             zvs          = a_i_1d(ji) * ht_s_1d(ji) 
     328            zvi          = a_i_1d(ji) * h_i_1d(ji) 
     329            zvs          = a_i_1d(ji) * h_s_1d(ji) 
    330330            ! lateral melting = concentration change 
    331             zhi_bef     = ht_i_1d(ji) - zdh_mel 
     331            zhi_bef     = h_i_1d(ji) - zdh_mel 
    332332            rswitch     = MAX( 0._wp , SIGN( 1._wp , zhi_bef - epsi20 ) ) 
    333333            zda_mel     = rswitch * a_i_1d(ji) * zdh_mel / ( 2._wp * MAX( zhi_bef, epsi20 ) ) 
    334334            a_i_1d(ji)  = MAX( epsi20, a_i_1d(ji) + zda_mel )  
    335335            ! adjust thickness 
    336             ht_i_1d(ji) = zvi / a_i_1d(ji)             
    337             ht_s_1d(ji) = zvs / a_i_1d(ji)             
     336            h_i_1d(ji) = zvi / a_i_1d(ji)             
     337            h_s_1d(ji) = zvs / a_i_1d(ji)             
    338338            ! retrieve total concentration 
    339339            at_i_1d(ji) = a_i_1d(ji) 
     
    362362         CALL tab_2d_1d( nidx, idxice(1:nidx), at_i_1d(1:nidx), at_i             ) 
    363363         CALL tab_2d_1d( nidx, idxice(1:nidx), a_i_1d (1:nidx), a_i (:,:,kl)     ) 
    364          CALL tab_2d_1d( nidx, idxice(1:nidx), ht_i_1d(1:nidx), ht_i(:,:,kl)     ) 
    365          CALL tab_2d_1d( nidx, idxice(1:nidx), ht_s_1d(1:nidx), ht_s(:,:,kl)     ) 
     364         CALL tab_2d_1d( nidx, idxice(1:nidx), h_i_1d(1:nidx), h_i(:,:,kl)     ) 
     365         CALL tab_2d_1d( nidx, idxice(1:nidx), h_s_1d(1:nidx), h_s(:,:,kl)     ) 
    366366         CALL tab_2d_1d( nidx, idxice(1:nidx), t_su_1d(1:nidx), t_su(:,:,kl)     ) 
    367367         CALL tab_2d_1d( nidx, idxice(1:nidx), sm_i_1d(1:nidx), sm_i(:,:,kl)     ) 
     
    436436         ! --- Change units of e_i, e_s from J/m2 to J/m3 --- ! 
    437437         DO jk = 1, nlay_i 
    438             WHERE( ht_i_1d(1:nidx)>0._wp ) e_i_1d(1:nidx,jk) = e_i_1d(1:nidx,jk) / (ht_i_1d(1:nidx) * a_i_1d(1:nidx)) * nlay_i 
     438            WHERE( h_i_1d(1:nidx)>0._wp ) e_i_1d(1:nidx,jk) = e_i_1d(1:nidx,jk) / (h_i_1d(1:nidx) * a_i_1d(1:nidx)) * nlay_i 
    439439         END DO 
    440440         DO jk = 1, nlay_s 
    441             WHERE( ht_s_1d(1:nidx)>0._wp ) e_s_1d(1:nidx,jk) = e_s_1d(1:nidx,jk) / (ht_s_1d(1:nidx) * a_i_1d(1:nidx)) * nlay_s 
     441            WHERE( h_s_1d(1:nidx)>0._wp ) e_s_1d(1:nidx,jk) = e_s_1d(1:nidx,jk) / (h_s_1d(1:nidx) * a_i_1d(1:nidx)) * nlay_s 
    442442         END DO 
    443443         ! 
     
    447447         ! --- Change units of e_i, e_s from J/m3 to J/m2 --- ! 
    448448         DO jk = 1, nlay_i 
    449             e_i_1d(1:nidx,jk) = e_i_1d(1:nidx,jk) * ht_i_1d(1:nidx) * a_i_1d(1:nidx) * r1_nlay_i 
     449            e_i_1d(1:nidx,jk) = e_i_1d(1:nidx,jk) * h_i_1d(1:nidx) * a_i_1d(1:nidx) * r1_nlay_i 
    450450         END DO 
    451451         DO jk = 1, nlay_s 
    452             e_s_1d(1:nidx,jk) = e_s_1d(1:nidx,jk) * ht_s_1d(1:nidx) * a_i_1d(1:nidx) * r1_nlay_s 
     452            e_s_1d(1:nidx,jk) = e_s_1d(1:nidx,jk) * h_s_1d(1:nidx) * a_i_1d(1:nidx) * r1_nlay_s 
    453453         END DO 
    454454         ! 
    455455         ! Change thickness to volume (replaces routine ice_var_eqv2glo) 
    456          v_i_1d(1:nidx)   = ht_i_1d(1:nidx) * a_i_1d(1:nidx) 
    457          v_s_1d(1:nidx)   = ht_s_1d(1:nidx) * a_i_1d(1:nidx) 
     456         v_i_1d(1:nidx)   = h_i_1d(1:nidx) * a_i_1d(1:nidx) 
     457         v_s_1d(1:nidx)   = h_s_1d(1:nidx) * a_i_1d(1:nidx) 
    458458         smv_i_1d(1:nidx) = sm_i_1d(1:nidx) * v_i_1d(1:nidx) 
    459459          
    460460         CALL tab_1d_2d( nidx, idxice(1:nidx), at_i_1d(1:nidx), at_i             ) 
    461461         CALL tab_1d_2d( nidx, idxice(1:nidx), a_i_1d (1:nidx), a_i (:,:,kl)     ) 
    462          CALL tab_1d_2d( nidx, idxice(1:nidx), ht_i_1d(1:nidx), ht_i(:,:,kl)     ) 
    463          CALL tab_1d_2d( nidx, idxice(1:nidx), ht_s_1d(1:nidx), ht_s(:,:,kl)     ) 
     462         CALL tab_1d_2d( nidx, idxice(1:nidx), h_i_1d(1:nidx), h_i(:,:,kl)     ) 
     463         CALL tab_1d_2d( nidx, idxice(1:nidx), h_s_1d(1:nidx), h_s(:,:,kl)     ) 
    464464         CALL tab_1d_2d( nidx, idxice(1:nidx), t_su_1d(1:nidx), t_su(:,:,kl)     ) 
    465465         CALL tab_1d_2d( nidx, idxice(1:nidx), sm_i_1d(1:nidx), sm_i(:,:,kl)     ) 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_da.F90

    r8534 r8563  
    135135             
    136136            ! Contribution to salt flux 
    137             sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoic *  ht_i_1d(ji) * zda * sm_i_1d(ji) * r1_rdtice 
     137            sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoic *  h_i_1d(ji) * zda * sm_i_1d(ji) * r1_rdtice 
    138138             
    139139            ! Contribution to heat flux into the ocean [W.m-2], (<0)   
    140             hfx_thd_1d(ji) = hfx_thd_1d(ji) - zda * r1_rdtice * ( ht_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  & 
    141                                                                 + ht_s_1d(ji) * r1_nlay_s * SUM( e_s_1d(ji,1:nlay_s) ) )  
     140            hfx_thd_1d(ji) = hfx_thd_1d(ji) - zda * r1_rdtice * ( h_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  & 
     141                                                                + h_s_1d(ji) * r1_nlay_s * SUM( e_s_1d(ji,1:nlay_s) ) )  
    142142             
    143143            ! Contribution to mass flux 
    144             wfx_lam_1d(ji) =  wfx_lam_1d(ji) + zda * r1_rdtice * ( rhoic * ht_i_1d(ji) + rhosn * ht_s_1d(ji) ) 
     144            wfx_lam_1d(ji) =  wfx_lam_1d(ji) + zda * r1_rdtice * ( rhoic * h_i_1d(ji) + rhosn * h_s_1d(ji) ) 
    145145             
    146146            ! new concentration 
    147147            a_i_1d(ji) = a_i_1d(ji) - zda 
    148148 
    149             ! ensure that ht_i = 0 where a_i = 0 
     149            ! ensure that h_i = 0 where a_i = 0 
    150150            IF( a_i_1d(ji) == 0._wp ) THEN 
    151                ht_i_1d(ji) = 0._wp 
    152                ht_s_1d(ji) = 0._wp 
     151               h_i_1d(ji) = 0._wp 
     152               h_s_1d(ji) = 0._wp 
    153153            ENDIF 
    154154         ENDIF 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_dh.F90

    r8562 r8563  
    121121      DO jk = 1, nlay_i 
    122122         DO ji = 1, nidx 
    123             h_i_old (ji,jk) = ht_i_1d(ji) * r1_nlay_i 
     123            h_i_old (ji,jk) = h_i_1d(ji) * r1_nlay_i 
    124124            eh_i_old(ji,jk) = e_i_1d(ji,jk) * h_i_old(ji,jk) 
    125125         END DO 
     
    145145         IF( t_s_1d(ji,1) > rt0 ) THEN !!! Internal melting 
    146146            ! Contribution to heat flux to the ocean [W.m-2], < 0   
    147             hfx_res_1d(ji) = hfx_res_1d(ji) + e_s_1d(ji,1) * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
     147            hfx_res_1d(ji) = hfx_res_1d(ji) + e_s_1d(ji,1) * h_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
    148148            ! Contribution to mass flux 
    149             wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhosn * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
     149            wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhosn * h_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
    150150            ! updates 
    151             ht_s_1d(ji)   = 0._wp 
     151            h_s_1d(ji)   = 0._wp 
    152152            e_s_1d (ji,1) = 0._wp 
    153153            t_s_1d (ji,1) = rt0 
     
    160160      DO jk = 1, nlay_i 
    161161         DO ji = 1, nidx 
    162             zh_i(ji,jk) = ht_i_1d(ji) * r1_nlay_i 
     162            zh_i(ji,jk) = h_i_1d(ji) * r1_nlay_i 
    163163            zeh_i(ji)   = zeh_i(ji) + e_i_1d(ji,jk) * zh_i(ji,jk) 
    164164         END DO 
     
    216216 
    217217         ! update thickness 
    218          ht_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdh_s_pre(ji) ) 
     218         h_s_1d(ji) = MAX( 0._wp , h_s_1d(ji) + zdh_s_pre(ji) ) 
    219219      END DO 
    220220 
     
    225225         DO ji = 1, nidx 
    226226            ! thickness change 
    227             rswitch          = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_1d(ji) ) )  
     227            rswitch          = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h_s_1d(ji) ) )  
    228228            rswitch          = rswitch * ( MAX( 0._wp, SIGN( 1._wp, e_s_1d(ji,jk) - epsi20 ) ) )  
    229229            zdeltah  (ji,jk) = - rswitch * zq_su(ji) / MAX( e_s_1d(ji,jk), epsi20 ) 
    230             zdeltah  (ji,jk) = MAX( zdeltah(ji,jk) , - ht_s_1d(ji) ) ! bound melting 
     230            zdeltah  (ji,jk) = MAX( zdeltah(ji,jk) , - h_s_1d(ji) ) ! bound melting 
    231231            zdh_s_mel(ji)    = zdh_s_mel(ji) + zdeltah(ji,jk)     
    232232            ! heat used to melt snow(W.m-2, >0) 
     
    236236            ! updates available heat + thickness 
    237237            zq_su (ji)  = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * e_s_1d(ji,jk) ) 
    238             ht_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdeltah(ji,jk) ) 
     238            h_s_1d(ji) = MAX( 0._wp , h_s_1d(ji) + zdeltah(ji,jk) ) 
    239239         END DO 
    240240      END DO 
     
    247247      zdeltah(1:nidx,:) = 0._wp 
    248248      DO ji = 1, nidx 
    249          zdh_s_sub(ji)  = MAX( - ht_s_1d(ji) , - evap_ice_1d(ji) * r1_rhosn * rdt_ice ) 
     249         zdh_s_sub(ji)  = MAX( - h_s_1d(ji) , - evap_ice_1d(ji) * r1_rhosn * rdt_ice ) 
    250250         ! remaining evap in kg.m-2 (used for ice melting later on) 
    251251         zevap_rema(ji)  = evap_ice_1d(ji) * rdt_ice + zdh_s_sub(ji) * rhosn 
     
    258258 
    259259         ! new snow thickness 
    260          ht_s_1d(ji)    =  MAX( 0._wp , ht_s_1d(ji) + zdh_s_sub(ji) ) 
     260         h_s_1d(ji)    =  MAX( 0._wp , h_s_1d(ji) + zdh_s_sub(ji) ) 
    261261         ! update precipitations after sublimation and correct sublimation 
    262262         zdh_s_pre(ji) = zdh_s_pre(ji) + zdeltah(ji,1) 
     
    275275      DO jk = 1, nlay_s 
    276276         DO ji = 1,nidx 
    277             rswitch       = MAX( 0._wp , SIGN( 1._wp, ht_s_1d(ji) - epsi20 ) ) 
    278             e_s_1d(ji,jk) = rswitch / MAX( ht_s_1d(ji), epsi20 ) *           & 
     277            rswitch       = MAX( 0._wp , SIGN( 1._wp, h_s_1d(ji) - epsi20 ) ) 
     278            e_s_1d(ji,jk) = rswitch / MAX( h_s_1d(ji), epsi20 ) *           & 
    279279              &            ( ( zdh_s_pre(ji)               ) * zqprec(ji) +  & 
    280               &              ( ht_s_1d(ji) - zdh_s_pre(ji) ) * rhosn * ( cpic * ( rt0 - t_s_1d(ji,jk) ) + lfus ) ) 
     280              &              ( h_s_1d(ji) - zdh_s_pre(ji) ) * rhosn * ( cpic * ( rt0 - t_s_1d(ji,jk) ) + lfus ) ) 
    281281         END DO 
    282282      END DO 
     
    376376      ! update ice thickness 
    377377      DO ji = 1, nidx 
    378          ht_i_1d(ji) =  MAX( 0._wp , ht_i_1d(ji) + dh_i_surf(ji) + dh_i_sub(ji) ) 
     378         h_i_1d(ji) =  MAX( 0._wp , h_i_1d(ji) + dh_i_surf(ji) + dh_i_sub(ji) ) 
    379379      END DO 
    380380 
     
    555555      !------------------------------------------- 
    556556      DO ji = 1, nidx 
    557          ht_i_1d(ji) =  MAX( 0._wp , ht_i_1d(ji) + dh_i_bott(ji) ) 
     557         h_i_1d(ji) =  MAX( 0._wp , h_i_1d(ji) + dh_i_bott(ji) ) 
    558558      END DO   
    559559 
     
    566566      DO ji = 1, nidx 
    567567         zq_rema(ji)     = zq_su(ji) + zq_bo(ji)  
    568          rswitch         = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_1d(ji) ) )   ! =1 if snow 
     568         rswitch         = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h_s_1d(ji) ) )   ! =1 if snow 
    569569         rswitch         = rswitch * MAX( 0._wp, SIGN( 1._wp, e_s_1d(ji,1) - epsi20 ) ) 
    570570         zdeltah  (ji,1) = - rswitch * zq_rema(ji) / MAX( e_s_1d(ji,1), epsi20 ) 
    571          zdeltah  (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - ht_s_1d(ji) ) ) ! bound melting 
     571         zdeltah  (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - h_s_1d(ji) ) ) ! bound melting 
    572572         dh_s_tot (ji)   = dh_s_tot(ji)  + zdeltah(ji,1) 
    573          ht_s_1d   (ji)  = ht_s_1d(ji)   + zdeltah(ji,1) 
     573         h_s_1d   (ji)  = h_s_1d(ji)   + zdeltah(ji,1) 
    574574         
    575575         zq_rema(ji)     = zq_rema(ji) + zdeltah(ji,1) * e_s_1d(ji,1)                ! update available heat (J.m-2) 
     
    594594      DO ji = 1, nidx 
    595595         ! 
    596          dh_snowice(ji) = MAX(  0._wp , ( rhosn * ht_s_1d(ji) + (rhoic-rau0) * ht_i_1d(ji) ) * z1_rho ) 
    597  
    598          ht_i_1d(ji)    = ht_i_1d(ji) + dh_snowice(ji) 
    599          ht_s_1d(ji)    = ht_s_1d(ji) - dh_snowice(ji) 
     596         dh_snowice(ji) = MAX(  0._wp , ( rhosn * h_s_1d(ji) + (rhoic-rau0) * h_i_1d(ji) ) * z1_rho ) 
     597 
     598         h_i_1d(ji)    = h_i_1d(ji) + dh_snowice(ji) 
     599         h_s_1d(ji)    = h_s_1d(ji) - dh_snowice(ji) 
    600600 
    601601         ! Contribution to energy flux to the ocean [J/m2], >0 (if sst<0) 
     
    632632      !------------------------------------------- 
    633633      DO ji = 1, nidx 
    634          rswitch     =  1.0 - MAX( 0._wp , SIGN( 1._wp , - ht_i_1d(ji) ) )  
     634         rswitch     =  1.0 - MAX( 0._wp , SIGN( 1._wp , - h_i_1d(ji) ) )  
    635635         t_su_1d(ji) =  rswitch * t_su_1d(ji) + ( 1.0 - rswitch ) * rt0 
    636636      END DO 
     
    639639         DO ji = 1,nidx 
    640640            ! mask enthalpy 
    641             rswitch       = 1._wp - MAX(  0._wp , SIGN( 1._wp, - ht_s_1d(ji) )  ) 
     641            rswitch       = 1._wp - MAX(  0._wp , SIGN( 1._wp, - h_s_1d(ji) )  ) 
    642642            e_s_1d(ji,jk) = rswitch * e_s_1d(ji,jk) 
    643643            ! recalculate t_s_1d from e_s_1d 
     
    646646      END DO 
    647647 
    648       ! --- ensure that a_i = 0 where ht_i = 0 --- 
    649       WHERE( ht_i_1d(1:nidx) == 0._wp )   a_i_1d(1:nidx) = 0._wp 
     648      ! --- ensure that a_i = 0 where h_i = 0 --- 
     649      WHERE( h_i_1d(1:nidx) == 0._wp )   a_i_1d(1:nidx) = 0._wp 
    650650      ! 
    651651   END SUBROUTINE ice_thd_dh 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_do.F90

    r8562 r8563  
    7676      !!             - Computation of variation of ice volume and mass 
    7777      !!             - Computation of a_i after lateral accretion and  
    78       !!               update ht_s_1d, ht_i_1d and tbif_1d(:,:)       
     78      !!               update h_s_1d, h_i_1d       
    7979      !!------------------------------------------------------------------------ 
    8080      INTEGER  ::   ji,jj,jk,jl      ! dummy loop indices 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_sal.F90

    r8559 r8563  
    7575            !  Update ice salinity from snow-ice and bottom growth 
    7676            !--------------------------------------------------------- 
    77             IF( ht_i_1d(ji) > 0._wp ) THEN 
     77            IF( h_i_1d(ji) > 0._wp ) THEN 
    7878               zs_sni   = sss_1d(ji) * ( rhoic - rhosn ) * r1_rhoic                                 ! Salinity of snow ice 
    79                zsm_i_si = ( zs_sni      - sm_i_1d(ji) ) *             dh_snowice(ji)  / ht_i_1d(ji) ! snow-ice     
    80                zsm_i_bg = ( s_i_new(ji) - sm_i_1d(ji) ) * MAX( 0._wp, dh_i_bott(ji) ) / ht_i_1d(ji) ! bottom growth 
     79               zsm_i_si = ( zs_sni      - sm_i_1d(ji) ) *             dh_snowice(ji)  / h_i_1d(ji) ! snow-ice     
     80               zsm_i_bg = ( s_i_new(ji) - sm_i_1d(ji) ) * MAX( 0._wp, dh_i_bott(ji) ) / h_i_1d(ji) ! bottom growth 
    8181               ! Update salinity (nb: salt flux already included in icethd_dh) 
    8282               sm_i_1d(ji) = sm_i_1d(ji) + zsm_i_bg + zsm_i_si 
     
    9797                
    9898               ! Salt flux 
    99                sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_1d(ji) * ht_i_1d(ji) * ( zsm_i_fl + zsm_i_gd ) * r1_rdtice 
     99               sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_1d(ji) * h_i_1d(ji) * ( zsm_i_fl + zsm_i_gd ) * r1_rdtice 
    100100            ENDIF 
    101101         END DO 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_zdf.F90

    r8562 r8563  
    8181      !!           ice salinities          : s_i_1d 
    8282      !!           number of layers in the ice/snow: nlay_i, nlay_s 
    83       !!           total ice/snow thickness : ht_i_1d, ht_s_1d 
     83      !!           total ice/snow thickness : h_i_1d, h_s_1d 
    8484      !!------------------------------------------------------------------- 
    8585      INTEGER ::   ji, jk         ! spatial loop index 
     
    145145      ! --- diag error on heat diffusion - PART 1 --- ! 
    146146      DO ji = 1, nidx 
    147          zq_ini(ji) = ( SUM( e_i_1d(ji,1:nlay_i) ) * ht_i_1d(ji) * r1_nlay_i +  & 
    148             &           SUM( e_s_1d(ji,1:nlay_s) ) * ht_s_1d(ji) * r1_nlay_s )  
     147         zq_ini(ji) = ( SUM( e_i_1d(ji,1:nlay_i) ) * h_i_1d(ji) * r1_nlay_i +  & 
     148            &           SUM( e_s_1d(ji,1:nlay_s) ) * h_s_1d(ji) * r1_nlay_s )  
    149149      END DO 
    150150 
     
    153153      !------------------ 
    154154      DO ji = 1, nidx 
    155          isnow(ji)= 1._wp - MAX( 0._wp , SIGN(1._wp, - ht_s_1d(ji) ) )  ! is there snow or not 
     155         isnow(ji)= 1._wp - MAX( 0._wp , SIGN(1._wp, - h_s_1d(ji) ) )  ! is there snow or not 
    156156         ! layer thickness 
    157          zh_i(ji) = ht_i_1d(ji) * r1_nlay_i 
    158          zh_s(ji) = ht_s_1d(ji) * r1_nlay_s 
     157         zh_i(ji) = h_i_1d(ji) * r1_nlay_i 
     158         zh_s(ji) = h_s_1d(ji) * r1_nlay_s 
    159159      END DO 
    160160      ! 
     
    187187         ! ftr_ice = io.qsr_ice.exp(-k(h_i)) transmitted below the ice  
    188188         ! fr1_i0_1d = i0 for a thin ice cover, fr1_i0_2d = i0 for a thick ice cover 
    189          zfac = MAX( 0._wp , 1._wp - ( ht_i_1d(ji) * z1_hsu ) )      
     189         zfac = MAX( 0._wp , 1._wp - ( h_i_1d(ji) * z1_hsu ) )      
    190190         i0(ji) = ( 1._wp - isnow(ji) ) * ( fr1_i0_1d(ji) + zfac * fr2_i0_1d(ji) ) 
    191191 
     
    279279            DO ji = 1, nidx 
    280280               zcnd_i = SUM( ztcond_i(ji,:) ) / REAL( nlay_i+1, wp )                             ! Mean sea ice thermal conductivity 
    281                zhe = ( rn_cnd_s * ht_i_1d(ji) + zcnd_i * ht_s_1d(ji) ) / ( rn_cnd_s + zcnd_i )   ! Effective thickness he (zhe) 
     281               zhe = ( rn_cnd_s * h_i_1d(ji) + zcnd_i * h_s_1d(ji) ) / ( rn_cnd_s + zcnd_i )   ! Effective thickness he (zhe) 
    282282               IF( zhe >=  zepsilon * 0.5_wp * EXP(1._wp) ) THEN 
    283283                  zghe(ji) = MIN( 2._wp, 0.5_wp * ( 1._wp + LOG( 2._wp * zhe / zepsilon ) ) )    ! G(he) 
     
    382382         DO ji = 1, nidx 
    383383            !                               !---------------------! 
    384             IF ( ht_s_1d(ji) > 0.0 ) THEN   !  snow-covered cells ! 
     384            IF ( h_s_1d(ji) > 0.0 ) THEN   !  snow-covered cells ! 
    385385               !                            !---------------------! 
    386386               ! snow interior terms (bottom equation has the same form as the others) 
     
    524524         DO ji = 1, nidx 
    525525            ! snow temperatures       
    526             IF( ht_s_1d(ji) > 0._wp ) THEN 
     526            IF( h_s_1d(ji) > 0._wp ) THEN 
    527527               t_s_1d(ji,nlay_s) = ( zindtbis(ji,nlay_s+1) - ztrid(ji,nlay_s+1,3) * t_i_1d(ji,1) )  & 
    528528                  &                / zdiagbis(ji,nlay_s+1) 
     
    598598      !     zhfx_err = correction on the diagnosed heat flux due to non-convergence of the algorithm used to solve heat equation 
    599599      DO ji = 1, nidx 
    600          zdq = - zq_ini(ji) + ( SUM( e_i_1d(ji,1:nlay_i) ) * ht_i_1d(ji) * r1_nlay_i +  & 
    601             &                   SUM( e_s_1d(ji,1:nlay_s) ) * ht_s_1d(ji) * r1_nlay_s ) 
     600         zdq = - zq_ini(ji) + ( SUM( e_i_1d(ji,1:nlay_i) ) * h_i_1d(ji) * r1_nlay_i +  & 
     601            &                   SUM( e_s_1d(ji,1:nlay_s) ) * h_s_1d(ji) * r1_nlay_s ) 
    602602 
    603603         IF( t_su_1d(ji) < rt0 ) THEN  ! case T_su < 0degC 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceupdate.F90

    r8562 r8563  
    199199      ! Snow/ice albedo (only if sent to coupler, useless in forced mode) 
    200200      !------------------------------------------------------------------ 
    201       CALL ice_alb( t_su, ht_i, ht_s, a_ip_frac, h_ip, ln_pnd_rad, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos 
     201      CALL ice_alb( t_su, h_i, h_s, a_ip_frac, h_ip, ln_pnd_rad, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos 
    202202      ! 
    203203      alb_ice(:,:,:) = ( 1._wp - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
  • 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 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icewri.F90

    r8562 r8563  
    137137      !---------------------------------- 
    138138      IF ( iom_use('iceconc_cat' ) )  CALL iom_put( "iceconc_cat"      , a_i   * zswi2   )        ! area for categories 
    139       IF ( iom_use('icethic_cat' ) )  CALL iom_put( "icethic_cat"      , ht_i  * zswi2   )        ! thickness for categories 
    140       IF ( iom_use('snowthic_cat') )  CALL iom_put( "snowthic_cat"     , ht_s  * zswi2   )        ! snow depth for categories 
     139      IF ( iom_use('icethic_cat' ) )  CALL iom_put( "icethic_cat"      , h_i  * zswi2   )        ! thickness for categories 
     140      IF ( iom_use('snowthic_cat') )  CALL iom_put( "snowthic_cat"     , h_s  * zswi2   )        ! snow depth for categories 
    141141      IF ( iom_use('salinity_cat') )  CALL iom_put( "salinity_cat"     , sm_i  * zswi2   )        ! salinity for categories 
    142142      IF ( iom_use('icetemp_cat' ) )  CALL iom_put( "icetemp_cat", ( SUM( t_i(:,:,:,:), dim=3 ) * r1_nlay_i - rt0 ) * zswi2 )    ! ice temperature 
     
    164164 
    165165      IF ( iom_use( "iceconc_cat_mv"  ) )  CALL iom_put( "iceconc_cat_mv" , a_i(:,:,:)  * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Area for categories 
    166       IF ( iom_use( "icethic_cat_mv"  ) )  CALL iom_put( "icethic_cat_mv" , ht_i(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Thickness for categories 
    167       IF ( iom_use( "snowthic_cat_mv" ) )  CALL iom_put( "snowthic_cat_mv", ht_s(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Snow depth for categories 
     166      IF ( iom_use( "icethic_cat_mv"  ) )  CALL iom_put( "icethic_cat_mv" , h_i(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Thickness for categories 
     167      IF ( iom_use( "snowthic_cat_mv" ) )  CALL iom_put( "snowthic_cat_mv", h_s(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Snow depth for categories 
    168168 
    169169      IF ( iom_use( "icestK"   ) ) CALL iom_put( "icestK"      , tm_su(:,:)                * zswi(:,:) + zmiss(:,:) )           ! Ice surface temperature 
     
    387387         CALL histwrite( kid, "vfxpnd", kt, wfx_pnd     , jpi*jpj, (/1/) ) 
    388388 
    389       CALL histwrite( kid, "sithicat", kt, ht_i        , jpi*jpj*jpl, (/1/) )     
     389      CALL histwrite( kid, "sithicat", kt, h_i         , jpi*jpj*jpl, (/1/) )     
    390390      CALL histwrite( kid, "siconcat", kt, a_i         , jpi*jpj*jpl, (/1/) )     
    391391      CALL histwrite( kid, "sisalcat", kt, sm_i        , jpi*jpj*jpl, (/1/) )     
    392392      CALL histwrite( kid, "sitemcat", kt, tm_i - rt0  , jpi*jpj*jpl, (/1/) )     
    393       CALL histwrite( kid, "snthicat", kt, ht_s        , jpi*jpj*jpl, (/1/) )     
     393      CALL histwrite( kid, "snthicat", kt, h_s         , jpi*jpj*jpl, (/1/) )     
    394394      CALL histwrite( kid, "sntemcat", kt, tm_su - rt0 , jpi*jpj*jpl, (/1/) )     
    395395 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r8306 r8563  
    5757#if defined key_lim3 
    5858      LOGICAL                           ::   ll_a_i 
    59       LOGICAL                           ::   ll_ht_i 
    60       LOGICAL                           ::   ll_ht_s 
     59      LOGICAL                           ::   ll_h_i 
     60      LOGICAL                           ::   ll_h_s 
    6161      REAL(wp), POINTER, DIMENSION(:,:) ::   a_i    !: now ice leads fraction climatology 
    62       REAL(wp), POINTER, DIMENSION(:,:) ::   ht_i   !: Now ice  thickness climatology 
    63       REAL(wp), POINTER, DIMENSION(:,:) ::   ht_s   !: now snow thickness 
     62      REAL(wp), POINTER, DIMENSION(:,:) ::   h_i    !: Now ice  thickness climatology 
     63      REAL(wp), POINTER, DIMENSION(:,:) ::   h_s    !: now snow thickness 
    6464#endif 
    6565#if defined key_top 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r8424 r8563  
    187187                  END DO 
    188188               ENDIF 
    189                IF( dta%ll_ht_i ) THEN 
     189               IF( dta%ll_h_i ) THEN 
    190190                  igrd = 1    
    191191                  DO jl = 1, jpl 
     
    193193                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    194194                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    195                         dta_bdy(ib_bdy)%ht_i (ib,jl) =  ht_i(ii,ij,jl) * tmask(ii,ij,1)  
     195                        dta_bdy(ib_bdy)%h_i (ib,jl) =  h_i(ii,ij,jl) * tmask(ii,ij,1)  
    196196                     END DO 
    197197                  END DO 
    198198               ENDIF 
    199                IF( dta%ll_ht_s ) THEN 
     199               IF( dta%ll_h_s ) THEN 
    200200                  igrd = 1    
    201201                  DO jl = 1, jpl 
     
    203203                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    204204                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    205                         dta_bdy(ib_bdy)%ht_s (ib,jl) =  ht_s(ii,ij,jl) * tmask(ii,ij,1)  
     205                        dta_bdy(ib_bdy)%h_s (ib,jl) =  h_s(ii,ij,jl) * tmask(ii,ij,1)  
    206206                     END DO 
    207207                  END DO 
     
    345345               IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is 1cat) 
    346346                CALL ice_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 
    347                                   & dta_bdy(ib_bdy)%ht_i,     dta_bdy(ib_bdy)%ht_s,     dta_bdy(ib_bdy)%a_i     ) 
     347                                  & dta_bdy(ib_bdy)%h_i,     dta_bdy(ib_bdy)%h_s,     dta_bdy(ib_bdy)%a_i     ) 
    348348               ENDIF 
    349349#endif 
     
    420420      TYPE(FLD_N) ::   bn_ssh, bn_u2d, bn_v2d           ! informations about the fields to be read 
    421421#if defined key_lim3 
    422       TYPE(FLD_N) ::   bn_a_i, bn_ht_i, bn_ht_s       
     422      TYPE(FLD_N) ::   bn_a_i, bn_h_i, bn_h_s       
    423423#endif 
    424424      NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d  
    425425#if defined key_lim3 
    426       NAMELIST/nambdy_dta/ bn_a_i, bn_ht_i, bn_ht_s 
     426      NAMELIST/nambdy_dta/ bn_a_i, bn_h_i, bn_h_s 
    427427#endif 
    428428      NAMELIST/nambdy_dta/ ln_full_vel, nb_jpk_bdy 
     
    638638               ENDIF 
    639639 
    640                IF( dta%ll_ht_i ) THEN 
    641                   jfld = jfld + 1 
    642                   blf_i(jfld) = bn_ht_i 
     640               IF( dta%ll_h_i ) THEN 
     641                  jfld = jfld + 1 
     642                  blf_i(jfld) = bn_h_i 
    643643                  ibdy(jfld) = ib_bdy 
    644644                  igrid(jfld) = 1 
     
    647647               ENDIF 
    648648 
    649                IF( dta%ll_ht_s ) THEN 
    650                   jfld = jfld + 1 
    651                    blf_i(jfld) = bn_ht_s 
     649               IF( dta%ll_h_s ) THEN 
     650                  jfld = jfld + 1 
     651                   blf_i(jfld) = bn_h_s 
    652652                  ibdy(jfld) = ib_bdy 
    653653                  igrid(jfld) = 1 
     
    785785         IF (cn_ice_lim(ib_bdy) /= 'none') THEN 
    786786            IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 
    787                ALLOCATE( dta_bdy(ib_bdy)%a_i (nblen(1),jpl) ) 
    788                ALLOCATE( dta_bdy(ib_bdy)%ht_i(nblen(1),jpl) ) 
    789                ALLOCATE( dta_bdy(ib_bdy)%ht_s(nblen(1),jpl) ) 
     787               ALLOCATE( dta_bdy(ib_bdy)%a_i(nblen(1),jpl) ) 
     788               ALLOCATE( dta_bdy(ib_bdy)%h_i(nblen(1),jpl) ) 
     789               ALLOCATE( dta_bdy(ib_bdy)%h_s(nblen(1),jpl) ) 
    790790            ELSE 
    791791               IF ( ll_bdylim3 ) THEN ! case input is Xcat 
    792792                  jfld = jfld + 1 
    793                   dta_bdy(ib_bdy)%a_i  => bf(jfld)%fnow(:,1,:) 
    794                   jfld = jfld + 1 
    795                   dta_bdy(ib_bdy)%ht_i => bf(jfld)%fnow(:,1,:) 
    796                   jfld = jfld + 1 
    797                   dta_bdy(ib_bdy)%ht_s => bf(jfld)%fnow(:,1,:) 
     793                  dta_bdy(ib_bdy)%a_i => bf(jfld)%fnow(:,1,:) 
     794                  jfld = jfld + 1 
     795                  dta_bdy(ib_bdy)%h_i => bf(jfld)%fnow(:,1,:) 
     796                  jfld = jfld + 1 
     797                  dta_bdy(ib_bdy)%h_s => bf(jfld)%fnow(:,1,:) 
    798798               ELSE ! case input is 1cat 
    799799                  jfld_ai  = jfld + 1 
     
    801801                  jfld_hts = jfld + 3 
    802802                  jfld     = jfld + 3 
    803                   ALLOCATE( dta_bdy(ib_bdy)%a_i (nblen(1),jpl) ) 
    804                   ALLOCATE( dta_bdy(ib_bdy)%ht_i(nblen(1),jpl) ) 
    805                   ALLOCATE( dta_bdy(ib_bdy)%ht_s(nblen(1),jpl) ) 
    806                   dta_bdy(ib_bdy)%a_i (:,:) = 0._wp 
    807                   dta_bdy(ib_bdy)%ht_i(:,:) = 0._wp 
    808                   dta_bdy(ib_bdy)%ht_s(:,:) = 0._wp 
     803                  ALLOCATE( dta_bdy(ib_bdy)%a_i(nblen(1),jpl) ) 
     804                  ALLOCATE( dta_bdy(ib_bdy)%h_i(nblen(1),jpl) ) 
     805                  ALLOCATE( dta_bdy(ib_bdy)%h_s(nblen(1),jpl) ) 
     806                  dta_bdy(ib_bdy)%a_i(:,:) = 0._wp 
     807                  dta_bdy(ib_bdy)%h_i(:,:) = 0._wp 
     808                  dta_bdy(ib_bdy)%h_s(:,:) = 0._wp 
    809809               ENDIF 
    810810 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice.F90

    r8514 r8563  
    111111            zwgt  = idx%nbw(jb,jgrd) 
    112112            zwgt1 = 1.e0 - idx%nbw(jb,jgrd) 
    113             a_i (ji,jj,jl) = ( a_i (ji,jj,jl) * zwgt1 + dta%a_i (jb,jl) * zwgt ) * tmask(ji,jj,1)  ! Leads fraction  
    114             ht_i(ji,jj,jl) = ( ht_i(ji,jj,jl) * zwgt1 + dta%ht_i(jb,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice depth  
    115             ht_s(ji,jj,jl) = ( ht_s(ji,jj,jl) * zwgt1 + dta%ht_s(jb,jl) * zwgt ) * tmask(ji,jj,1)  ! Snow depth 
     113            a_i(ji,jj,jl) = ( a_i(ji,jj,jl) * zwgt1 + dta%a_i(jb,jl) * zwgt ) * tmask(ji,jj,1)  ! Leads fraction  
     114            h_i(ji,jj,jl) = ( h_i(ji,jj,jl) * zwgt1 + dta%h_i(jb,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice depth  
     115            h_s(ji,jj,jl) = ( h_s(ji,jj,jl) * zwgt1 + dta%h_s(jb,jl) * zwgt ) * tmask(ji,jj,1)  ! Snow depth 
    116116 
    117117            ! ----------------- 
     
    122122 
    123123            ! Then, a) transfer the snow excess into the ice (different from icethd_dh) 
    124             zdh = MAX( 0._wp, ( rhosn * ht_s(ji,jj,jl) + ( rhoic - rau0 ) * ht_i(ji,jj,jl) ) * r1_rau0 ) 
     124            zdh = MAX( 0._wp, ( rhosn * h_s(ji,jj,jl) + ( rhoic - rau0 ) * h_i(ji,jj,jl) ) * r1_rau0 ) 
    125125            ! Or, b) transfer all the snow into ice (if incoming ice is likely to melt as it comes into a warmer environment) 
    126             !zdh = MAX( 0._wp, ht_s(ji,jj,jl) * rhosn / rhoic ) 
    127  
    128             ! recompute ht_i, ht_s 
    129             ht_i(ji,jj,jl) = MIN( hi_max(jl), ht_i(ji,jj,jl) + zdh ) 
    130             ht_s(ji,jj,jl) = MAX( 0._wp, ht_s(ji,jj,jl) - zdh * rhoic / rhosn )  
     126            !zdh = MAX( 0._wp, h_s(ji,jj,jl) * rhosn / rhoic ) 
     127 
     128            ! recompute h_i, h_s 
     129            h_i(ji,jj,jl) = MIN( hi_max(jl), h_i(ji,jj,jl) + zdh ) 
     130            h_s(ji,jj,jl) = MAX( 0._wp, h_s(ji,jj,jl) - zdh * rhoic / rhosn )  
    131131 
    132132         ENDDO 
    133          CALL lbc_bdy_lnk(  a_i(:,:,jl), 'T', 1., ib_bdy ) 
    134          CALL lbc_bdy_lnk( ht_i(:,:,jl), 'T', 1., ib_bdy ) 
    135          CALL lbc_bdy_lnk( ht_s(:,:,jl), 'T', 1., ib_bdy ) 
     133         CALL lbc_bdy_lnk( a_i(:,:,jl), 'T', 1., ib_bdy ) 
     134         CALL lbc_bdy_lnk( h_i(:,:,jl), 'T', 1., ib_bdy ) 
     135         CALL lbc_bdy_lnk( h_s(:,:,jl), 'T', 1., ib_bdy ) 
    136136      ENDDO 
    137137      ! retrieve at_i 
     
    161161            ! 
    162162            ! concentration and thickness 
    163             a_i (ji,jj,jl) = a_i (ii,ij,jl) * rswitch 
    164             ht_i(ji,jj,jl) = ht_i(ii,ij,jl) * rswitch 
    165             ht_s(ji,jj,jl) = ht_s(ii,ij,jl) * rswitch 
     163            a_i(ji,jj,jl) = a_i(ii,ij,jl) * rswitch 
     164            h_i(ji,jj,jl) = h_i(ii,ij,jl) * rswitch 
     165            h_s(ji,jj,jl) = h_s(ii,ij,jl) * rswitch 
    166166            ! 
    167167            ! Ice and snow volumes 
    168             v_i(ji,jj,jl) = ht_i(ji,jj,jl) * a_i(ji,jj,jl) 
    169             v_s(ji,jj,jl) = ht_s(ji,jj,jl) * a_i(ji,jj,jl) 
     168            v_i(ji,jj,jl) = h_i(ji,jj,jl) * a_i(ji,jj,jl) 
     169            v_s(ji,jj,jl) = h_s(ji,jj,jl) * a_i(ji,jj,jl) 
    170170            ! 
    171171            SELECT CASE( jpbound ) 
     
    222222                  - rcp      * ( ztmelts - rt0 ) ) 
    223223               ! Mutliply by ice volume, and divide by number of layers to get heat content in J/m2 
    224                e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * a_i(ji,jj,jl) * ht_i(ji,jj,jl) * r1_nlay_i 
     224               e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * a_i(ji,jj,jl) * h_i(ji,jj,jl) * r1_nlay_i 
    225225            END DO 
    226226            ! 
     
    228228         ! 
    229229         CALL lbc_bdy_lnk(  a_i(:,:,jl), 'T', 1., ib_bdy ) 
    230          CALL lbc_bdy_lnk( ht_i(:,:,jl), 'T', 1., ib_bdy ) 
    231          CALL lbc_bdy_lnk( ht_s(:,:,jl), 'T', 1., ib_bdy ) 
     230         CALL lbc_bdy_lnk(  h_i(:,:,jl), 'T', 1., ib_bdy ) 
     231         CALL lbc_bdy_lnk(  h_s(:,:,jl), 'T', 1., ib_bdy ) 
    232232         CALL lbc_bdy_lnk(  v_i(:,:,jl), 'T', 1., ib_bdy ) 
    233233         CALL lbc_bdy_lnk(  v_s(:,:,jl), 'T', 1., ib_bdy ) 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r8306 r8563  
    356356          CASE('none') 
    357357             IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    358              dta_bdy(ib_bdy)%ll_a_i  = .false. 
    359              dta_bdy(ib_bdy)%ll_ht_i = .false. 
    360              dta_bdy(ib_bdy)%ll_ht_s = .false. 
     358             dta_bdy(ib_bdy)%ll_a_i = .false. 
     359             dta_bdy(ib_bdy)%ll_h_i = .false. 
     360             dta_bdy(ib_bdy)%ll_h_s = .false. 
    361361          CASE('frs') 
    362362             IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    363              dta_bdy(ib_bdy)%ll_a_i  = .true. 
    364              dta_bdy(ib_bdy)%ll_ht_i = .true. 
    365              dta_bdy(ib_bdy)%ll_ht_s = .true. 
     363             dta_bdy(ib_bdy)%ll_a_i = .true. 
     364             dta_bdy(ib_bdy)%ll_h_i = .true. 
     365             dta_bdy(ib_bdy)%ll_h_s = .true. 
    366366          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 
    367367        END SELECT 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r8306 r8563  
    768768#if defined key_lim3 
    769769              DO jl=1,jpl 
    770                  transports_2d(1,jsec,jseg) = transports_2d(1,jsec,jseg) + (zTnorm)*     & 
    771                                    a_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) * & 
    772                                   ( ht_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) +  & 
    773                                     ht_s(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) ) 
     770                 transports_2d(1,jsec,jseg) = transports_2d(1,jsec,jseg) + (zTnorm)*       & 
     771                                    a_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) * & 
     772                                  ( h_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) +  & 
     773                                    h_s(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) ) 
    774774                                    
    775775                 transports_2d(2,jsec,jseg) = transports_2d(2,jsec,jseg) + (zTnorm)*   & 
    776                                    a_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) 
     776                                    a_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) 
    777777              END DO 
    778778#endif 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90

    r8512 r8563  
    9191   ! already defined in ice.F90 for LIM3 
    9292   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  a_i 
    93    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  ht_i, ht_s 
     93   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  h_i, h_s 
    9494 
    9595   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   tatm_ice       !: air temperature [K] 
     
    143143         &                     emp_ice(jpi,jpj)      , qns_ice(jpi,jpj,1)    , dqns_ice(jpi,jpj,1)   , & 
    144144         &                     STAT= ierr(3) )       
    145       IF( ln_cpl )   ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(4) ) 
     145      IF( ln_cpl )   ALLOCATE( h_i(jpi,jpj,jpl) , h_s(jpi,jpj,jpl) , STAT=ierr(4) ) 
    146146#endif 
    147147 
     
    173173   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   emp_ice 
    174174   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   qsr_ice 
    175    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ht_i, ht_s 
     175   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   h_i, h_s 
    176176   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   topmelt, botmelt 
    177177   ! 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r8422 r8563  
    19981998            ! we must send the surface potential temperature  
    19991999            IF( l_useCT )  THEN    ;   ztmp1(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 
    2000             ELSE                    ;   ztmp1(:,:) = tsn(:,:,1,jp_tem) 
     2000            ELSE                   ;   ztmp1(:,:) = tsn(:,:,1,jp_tem) 
    20012001            ENDIF 
    20022002            ! 
     
    21112111            SELECT CASE( sn_snd_thick%clcat ) 
    21122112            CASE( 'yes' )    
    2113                ztmp3(:,:,1:jpl) =  ht_i(:,:,1:jpl) * a_i(:,:,1:jpl) 
    2114                ztmp4(:,:,1:jpl) =  ht_s(:,:,1:jpl) * a_i(:,:,1:jpl) 
     2113               ztmp3(:,:,1:jpl) =  h_i(:,:,1:jpl) * a_i(:,:,1:jpl) 
     2114               ztmp4(:,:,1:jpl) =  h_s(:,:,1:jpl) * a_i(:,:,1:jpl) 
    21152115            CASE( 'no' ) 
    21162116               ztmp3(:,:,:) = 0.0   ;  ztmp4(:,:,:) = 0.0 
    21172117               DO jl=1,jpl 
    2118                   ztmp3(:,:,1) = ztmp3(:,:,1) + ht_i(:,:,jl) * a_i(:,:,jl) 
    2119                   ztmp4(:,:,1) = ztmp4(:,:,1) + ht_s(:,:,jl) * a_i(:,:,jl) 
     2118                  ztmp3(:,:,1) = ztmp3(:,:,1) + h_i(:,:,jl) * a_i(:,:,jl) 
     2119                  ztmp4(:,:,1) = ztmp4(:,:,1) + h_s(:,:,jl) * a_i(:,:,jl) 
    21202120               ENDDO 
    21212121            CASE default                  ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%clcat' ) 
     
    21242124            SELECT CASE( sn_snd_thick%clcat ) 
    21252125            CASE( 'yes' ) 
    2126                ztmp3(:,:,1:jpl) = ht_i(:,:,1:jpl) 
    2127                ztmp4(:,:,1:jpl) = ht_s(:,:,1:jpl) 
     2126               ztmp3(:,:,1:jpl) = h_i(:,:,1:jpl) 
     2127               ztmp4(:,:,1:jpl) = h_s(:,:,1:jpl) 
    21282128            CASE( 'no' ) 
    21292129               WHERE( SUM( a_i, dim=3 ) /= 0. ) 
    2130                   ztmp3(:,:,1) = SUM( ht_i * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
    2131                   ztmp4(:,:,1) = SUM( ht_s * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
     2130                  ztmp3(:,:,1) = SUM( h_i * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
     2131                  ztmp4(:,:,1) = SUM( h_s * a_i, dim=3 ) / SUM( a_i, dim=3 ) 
    21322132               ELSEWHERE 
    21332133                 ztmp3(:,:,1) = 0. 
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r8331 r8563  
    721721 
    722722      DO jl = 1,ncat 
    723          CALL cice2nemo(vsnon(:,:,jl,:),ht_s(:,:,jl),'T', 1. ) 
    724          CALL cice2nemo(vicen(:,:,jl,:),ht_i(:,:,jl),'T', 1. ) 
     723         CALL cice2nemo(vsnon(:,:,jl,:),h_s(:,:,jl),'T', 1. ) 
     724         CALL cice2nemo(vicen(:,:,jl,:),h_i(:,:,jl),'T', 1. ) 
    725725      ENDDO 
    726726      ! 
Note: See TracChangeset for help on using the changeset viewer.