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 4872 for trunk – NEMO

Changeset 4872 for trunk


Ignore:
Timestamp:
2014-11-18T18:03:00+01:00 (9 years ago)
Author:
clem
Message:

LIM3: replacing old_ by _b

Location:
trunk/NEMOGCM/NEMO/LIM_SRC_3
Files:
14 edited

Legend:

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

    r4869 r4872  
    105105   !! ** Global variables                                                 | 
    106106   !!-------------|-------------|---------------------------------|-------| 
    107    !! a_i         | a_i_b       |    Ice concentration            |       | 
     107   !! a_i         | a_i_1d      |    Ice concentration            |       | 
    108108   !! v_i         |      -      |    Ice volume per unit area     | m     | 
    109109   !! v_s         |      -      |    Snow volume per unit area    | m     | 
     
    111111   !! oa_i        !      -      !    Sea ice areal age content    | day   | 
    112112   !! e_i         !      -      !    Ice enthalpy                 | 10^9 J|  
    113    !!      -      ! q_i_b       !    Ice enthalpy per unit vol.   | J/m3  |  
     113   !!      -      ! q_i_1d      !    Ice enthalpy per unit vol.   | J/m3  |  
    114114   !! e_s         !      -      !    Snow enthalpy                | 10^9 J|  
    115    !!      -      ! q_s_b       !    Snow enthalpy per unit vol.  | J/m3  |  
     115   !!      -      ! q_s_1d      !    Snow enthalpy per unit vol.  | J/m3  |  
    116116   !!                                                                     | 
    117117   !!-------------|-------------|---------------------------------|-------| 
     
    120120   !!-------------|-------------|---------------------------------|-------| 
    121121   !!                                                                     | 
    122    !! ht_i        | ht_i_b      |    Ice thickness                | m     | 
    123    !! ht_s        ! ht_s_b      |    Snow depth                   | m     | 
    124    !! sm_i        ! sm_i_b      |    Sea ice bulk salinity        ! ppt   | 
    125    !! s_i         ! s_i_b       |    Sea ice salinity profile     ! ppt   | 
     122   !! ht_i        | ht_i_1d     |    Ice thickness                | m     | 
     123   !! ht_s        ! ht_s_1d     |    Snow depth                   | m     | 
     124   !! sm_i        ! sm_i_1d     |    Sea ice bulk salinity        ! ppt   | 
     125   !! s_i         ! s_i_1d      |    Sea ice salinity profile     ! ppt   | 
    126126   !! o_i         !      -      |    Sea ice Age                  ! days  | 
    127    !! t_i         ! t_i_b       |    Sea ice temperature          ! K     | 
    128    !! t_s         ! t_s_b       |    Snow temperature             ! K     | 
    129    !! t_su        ! t_su_b      |    Sea ice surface temperature  ! K     | 
     127   !! t_i         ! t_i_1d      |    Sea ice temperature          ! K     | 
     128   !! t_s         ! t_s_1d      |    Snow temperature             ! K     | 
     129   !! t_su        ! t_su_1d     |    Sea ice surface temperature  ! K     | 
    130130   !!                                                                     | 
    131131   !! notes: the ice model only sees a bulk (i.e., vertically averaged)   | 
     
    142142   !! ***         Category-summed state variables (diagnostic)        *** | 
    143143   !! ******************************************************************* | 
    144    !! at_i        | at_i_b      |    Total ice concentration      |       | 
     144   !! at_i        | at_i_1d     |    Total ice concentration      |       | 
    145145   !! vt_i        |      -      |    Total ice vol. per unit area | m     | 
    146146   !! vt_s        |      -      |    Total snow vol. per unit ar. | m     | 
     
    346346   !! * Old values of global variables 
    347347   !!-------------------------------------------------------------------------- 
    348    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   old_v_s, old_v_i               !: snow and ice volumes 
    349    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   old_a_i, old_smv_i, old_oa_i   !: ??? 
    350    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   old_e_s                        !: snow heat content 
    351    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   old_e_i                        !: ice temperatures 
    352    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   old_u_ice, old_v_ice           !: ice velocity (gv6 and gv7) 
     348   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   v_s_b, v_i_b               !: snow and ice volumes 
     349   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   a_i_b, smv_i_b, oa_i_b     !: 
     350   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_s_b                      !: snow heat content 
     351   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_i_b                      !: ice temperatures 
     352   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   u_ice_b, v_ice_b           !: ice velocity 
    353353       
    354354 
     
    487487      ! * Old values of global variables 
    488488      ii = ii + 1 
    489       ALLOCATE( old_v_s  (jpi,jpj,jpl) , old_v_i  (jpi,jpj,jpl) , old_e_s(jpi,jpj,nlay_s,jpl) ,     & 
    490          &      old_a_i  (jpi,jpj,jpl) , old_smv_i(jpi,jpj,jpl) , old_e_i(jpi,jpj,jkmax ,jpl) ,     & 
    491          &      old_oa_i (jpi,jpj,jpl)                                                        ,     & 
    492          &      old_u_ice(jpi,jpj)     , old_v_ice(jpi,jpj)                                   , STAT=ierr(ii) ) 
     489      ALLOCATE( v_s_b  (jpi,jpj,jpl) , v_i_b  (jpi,jpj,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) ,     & 
     490         &      a_i_b  (jpi,jpj,jpl) , smv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,jkmax ,jpl) ,     & 
     491         &      oa_i_b (jpi,jpj,jpl)                                                        ,     & 
     492         &      u_ice_b(jpi,jpj)     , v_ice_b(jpi,jpj)                                   , STAT=ierr(ii) ) 
    493493 
    494494      ! * Increment of global variables 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90

    r4863 r4872  
    8383         IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limdyn', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    8484 
    85          old_u_ice(:,:) = u_ice(:,:) * tmu(:,:) 
    86          old_v_ice(:,:) = v_ice(:,:) * tmv(:,:) 
     85         u_ice_b(:,:) = u_ice(:,:) * tmu(:,:) 
     86         v_ice_b(:,:) = v_ice(:,:) * tmv(:,:) 
    8787 
    8888         ! Rheology (ice dynamics) 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90

    r4869 r4872  
    166166      REAL(wp), POINTER, DIMENSION(:,:,:) ::   hL          ! left boundary for the ITD for each thickness 
    167167      REAL(wp), POINTER, DIMENSION(:,:,:) ::   hR          ! left boundary for the ITD for each thickness 
    168       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zht_i_o     ! old ice thickness 
     168      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zht_i_b     ! old ice thickness 
    169169      REAL(wp), POINTER, DIMENSION(:,:,:) ::   dummy_es 
    170170      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdaice, zdvice          ! local increment of ice area and volume 
     
    184184      CALL wrk_alloc( jpi,jpj, zremap_flag )    ! integer 
    185185      CALL wrk_alloc( jpi,jpj,jpl-1, zdonor )   ! integer 
    186       CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_o, dummy_es ) 
     186      CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 
    187187      CALL wrk_alloc( jpi,jpj,jpl-1, zdaice, zdvice )    
    188188      CALL wrk_alloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )    
     
    221221               zindb             = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i(ji,jj,jl) + epsi10 ) )     !0 if no ice and 1 if yes 
    222222               ht_i(ji,jj,jl)    = v_i(ji,jj,jl) / MAX( a_i(ji,jj,jl), epsi10 ) * zindb 
    223                zindb             = 1.0 - MAX( 0.0, SIGN( 1.0, - old_a_i(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes 
    224                zht_i_o(ji,jj,jl) = old_v_i(ji,jj,jl) / MAX( old_a_i(ji,jj,jl), epsi10 ) * zindb 
    225                IF( a_i(ji,jj,jl) > epsi10 )   zdhice(ji,jj,jl) = ht_i(ji,jj,jl) - zht_i_o(ji,jj,jl)  
     223               zindb             = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i_b(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes 
     224               zht_i_b(ji,jj,jl) = v_i_b(ji,jj,jl) / MAX( a_i_b(ji,jj,jl), epsi10 ) * zindb 
     225               IF( a_i(ji,jj,jl) > epsi10 )   zdhice(ji,jj,jl) = ht_i(ji,jj,jl) - zht_i_b(ji,jj,jl)  
    226226            END DO 
    227227         END DO 
     
    268268            ! 
    269269            zhbnew(ii,ij,jl) = hi_max(jl) 
    270             IF ( old_a_i(ii,ij,jl) > epsi10 .AND. old_a_i(ii,ij,jl+1) > epsi10 ) THEN 
     270            IF ( a_i_b(ii,ij,jl) > epsi10 .AND. a_i_b(ii,ij,jl+1) > epsi10 ) THEN 
    271271               !interpolate between adjacent category growth rates 
    272                zslope           = ( zdhice(ii,ij,jl+1) - zdhice(ii,ij,jl) ) / ( zht_i_o(ii,ij,jl+1) - zht_i_o(ii,ij,jl) ) 
    273                zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) + zslope * ( hi_max(jl) - zht_i_o(ii,ij,jl) ) 
    274             ELSEIF ( old_a_i(ii,ij,jl) > epsi10) THEN 
     272               zslope           = ( zdhice(ii,ij,jl+1) - zdhice(ii,ij,jl) ) / ( zht_i_b(ii,ij,jl+1) - zht_i_b(ii,ij,jl) ) 
     273               zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) + zslope * ( hi_max(jl) - zht_i_b(ii,ij,jl) ) 
     274            ELSEIF ( a_i_b(ii,ij,jl) > epsi10) THEN 
    275275               zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) 
    276             ELSEIF ( old_a_i(ii,ij,jl+1) > epsi10) THEN 
     276            ELSEIF ( a_i_b(ii,ij,jl+1) > epsi10) THEN 
    277277               zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl+1) 
    278278            ENDIF 
     
    337337      !----------------------------------------------------------------------------------------------- 
    338338      !- 7.1 g(h) for category 1 at start of time step 
    339       CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_o(:,:,klbnd),         & 
     339      CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_b(:,:,klbnd),         & 
    340340         &                  g0(:,:,klbnd), g1(:,:,klbnd), hL(:,:,klbnd),   & 
    341341         &                  hR(:,:,klbnd), zremap_flag ) 
     
    362362                  ! Constrain new thickness <= ht_i 
    363363                  zdamax = a_i(ii,ij,klbnd) * &  
    364                      (1.0 - ht_i(ii,ij,klbnd)/zht_i_o(ii,ij,klbnd)) ! zdamax > 0 
     364                     (1.0 - ht_i(ii,ij,klbnd)/zht_i_b(ii,ij,klbnd)) ! zdamax > 0 
    365365                  !ice area lost due to melting of thin ice 
    366366                  zda0   = MIN(zda0, zdamax) 
     
    484484      CALL wrk_dealloc( jpi,jpj, zremap_flag )    ! integer 
    485485      CALL wrk_dealloc( jpi,jpj,jpl-1, zdonor )   ! integer 
    486       CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_o, dummy_es ) 
     486      CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 
    487487      CALL wrk_dealloc( jpi,jpj,jpl-1, zdaice, zdvice )    
    488488      CALL wrk_dealloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )    
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r4787 r4872  
    117117      CALL iom_put( "qsr_oce" , qsr(:,:) * pfrld(:,:) )   !     solar flux at ocean surface 
    118118      CALL iom_put( "qns_oce" , qns(:,:) * pfrld(:,:) )   ! non-solar flux at ocean surface 
    119       CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * old_a_i(:,:,:), dim=3 ) )  !     solar flux at ice surface 
    120       CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * old_a_i(:,:,:), dim=3 ) )  ! non-solar flux at ice surface 
    121       CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * old_a_i(:,:,:), dim=3 ) )  !     solar flux transmitted thru ice 
     119      CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )  !     solar flux at ice surface 
     120      CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )  ! non-solar flux at ice surface 
     121      CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )  !     solar flux transmitted thru ice 
    122122      CALL iom_put( "qt_oce"  , ( qsr(:,:) + qns(:,:) ) * pfrld(:,:) )   
    123       CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) * old_a_i(:,:,:), dim=3 ) ) 
     123      CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) * a_i_b(:,:,:), dim=3 ) ) 
    124124 
    125125      ! pfrld is the lead fraction at the previous time step (actually between TRP and THD) 
     
    139139               !!!zfcm1 = qsr_tot(ji,jj) + ftr_ice(ji,jj) * ( 1._wp - pfrld(ji,jj) ) / ( 1._wp - zinda + zinda * iatte(ji,jj) ) 
    140140               DO jl = 1, jpl 
    141                   zfcm1 = zfcm1 - ( qsr_ice(ji,jj,jl) - ftr_ice(ji,jj,jl) ) * old_a_i(ji,jj,jl) 
     141                  zfcm1 = zfcm1 - ( qsr_ice(ji,jj,jl) - ftr_ice(ji,jj,jl) ) * a_i_b(ji,jj,jl) 
    142142               END DO 
    143143            ELSE 
     
    146146               zfcm1   = pfrld(ji,jj) * qsr(ji,jj) 
    147147               DO jl = 1, jpl 
    148                   zfcm1   = zfcm1 + old_a_i(ji,jj,jl) * ftr_ice(ji,jj,jl) 
     148                  zfcm1   = zfcm1 + a_i_b(ji,jj,jl) * ftr_ice(ji,jj,jl) 
    149149               END DO 
    150150            ENDIF 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r4765 r4872  
    259259            !------------------------- 
    260260 
    261             CALL tab_2d_1d( nbpb, at_i_b     (1:nbpb), at_i            , jpi, jpj, npb(1:nbpb) ) 
    262             CALL tab_2d_1d( nbpb, a_i_b      (1:nbpb), a_i(:,:,jl)     , jpi, jpj, npb(1:nbpb) ) 
    263             CALL tab_2d_1d( nbpb, ht_i_b     (1:nbpb), ht_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    264             CALL tab_2d_1d( nbpb, ht_s_b     (1:nbpb), ht_s(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    265  
    266             CALL tab_2d_1d( nbpb, t_su_b     (1:nbpb), t_su(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    267             CALL tab_2d_1d( nbpb, sm_i_b     (1:nbpb), sm_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     261            CALL tab_2d_1d( nbpb, at_i_1d     (1:nbpb), at_i            , jpi, jpj, npb(1:nbpb) ) 
     262            CALL tab_2d_1d( nbpb, a_i_1d      (1:nbpb), a_i(:,:,jl)     , jpi, jpj, npb(1:nbpb) ) 
     263            CALL tab_2d_1d( nbpb, ht_i_1d     (1:nbpb), ht_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     264            CALL tab_2d_1d( nbpb, ht_s_1d     (1:nbpb), ht_s(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     265 
     266            CALL tab_2d_1d( nbpb, t_su_1d     (1:nbpb), t_su(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     267            CALL tab_2d_1d( nbpb, sm_i_1d     (1:nbpb), sm_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    268268            DO jk = 1, nlay_s 
    269                CALL tab_2d_1d( nbpb, t_s_b(1:nbpb,jk), t_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    270                CALL tab_2d_1d( nbpb, q_s_b(1:nbpb,jk), e_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     269               CALL tab_2d_1d( nbpb, t_s_1d(1:nbpb,jk), t_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     270               CALL tab_2d_1d( nbpb, q_s_1d(1:nbpb,jk), e_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    271271            END DO 
    272272            DO jk = 1, nlay_i 
    273                CALL tab_2d_1d( nbpb, t_i_b(1:nbpb,jk), t_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    274                CALL tab_2d_1d( nbpb, q_i_b(1:nbpb,jk), e_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    275                CALL tab_2d_1d( nbpb, s_i_b(1:nbpb,jk), s_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     273               CALL tab_2d_1d( nbpb, t_i_1d(1:nbpb,jk), t_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     274               CALL tab_2d_1d( nbpb, q_i_1d(1:nbpb,jk), e_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     275               CALL tab_2d_1d( nbpb, s_i_1d(1:nbpb,jk), s_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    276276            END DO 
    277277 
     
    287287            ENDIF 
    288288            CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 
    289             CALL tab_2d_1d( nbpb, t_bo_b     (1:nbpb), t_bo            , jpi, jpj, npb(1:nbpb) ) 
     289            CALL tab_2d_1d( nbpb, t_bo_1d     (1:nbpb), t_bo            , jpi, jpj, npb(1:nbpb) ) 
    290290            CALL tab_2d_1d( nbpb, sprecip_1d (1:nbpb), sprecip         , jpi, jpj, npb(1:nbpb) )  
    291291            CALL tab_2d_1d( nbpb, fhtur_1d   (1:nbpb), fhtur           , jpi, jpj, npb(1:nbpb) ) 
     
    341341 
    342342            ! --- Ice enthalpy remapping --- ! 
    343             CALL lim_thd_ent( 1, nbpb, q_i_b(1:nbpb,:) )  
     343            CALL lim_thd_ent( 1, nbpb, q_i_1d(1:nbpb,:) )  
    344344                                             
    345345            !---------------------------------! 
     
    357357            !-------------------------------- 
    358358 
    359                CALL tab_1d_2d( nbpb, at_i          , npb, at_i_b    (1:nbpb)   , jpi, jpj ) 
    360                CALL tab_1d_2d( nbpb, ht_i(:,:,jl)  , npb, ht_i_b    (1:nbpb)   , jpi, jpj ) 
    361                CALL tab_1d_2d( nbpb, ht_s(:,:,jl)  , npb, ht_s_b    (1:nbpb)   , jpi, jpj ) 
    362                CALL tab_1d_2d( nbpb, a_i (:,:,jl)  , npb, a_i_b     (1:nbpb)   , jpi, jpj ) 
    363                CALL tab_1d_2d( nbpb, t_su(:,:,jl)  , npb, t_su_b    (1:nbpb)   , jpi, jpj ) 
    364                CALL tab_1d_2d( nbpb, sm_i(:,:,jl)  , npb, sm_i_b    (1:nbpb)   , jpi, jpj ) 
     359               CALL tab_1d_2d( nbpb, at_i          , npb, at_i_1d    (1:nbpb)   , jpi, jpj ) 
     360               CALL tab_1d_2d( nbpb, ht_i(:,:,jl)  , npb, ht_i_1d    (1:nbpb)   , jpi, jpj ) 
     361               CALL tab_1d_2d( nbpb, ht_s(:,:,jl)  , npb, ht_s_1d    (1:nbpb)   , jpi, jpj ) 
     362               CALL tab_1d_2d( nbpb, a_i (:,:,jl)  , npb, a_i_1d     (1:nbpb)   , jpi, jpj ) 
     363               CALL tab_1d_2d( nbpb, t_su(:,:,jl)  , npb, t_su_1d    (1:nbpb)   , jpi, jpj ) 
     364               CALL tab_1d_2d( nbpb, sm_i(:,:,jl)  , npb, sm_i_1d    (1:nbpb)   , jpi, jpj ) 
    365365            DO jk = 1, nlay_s 
    366                CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_b     (1:nbpb,jk), jpi, jpj) 
    367                CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_b     (1:nbpb,jk), jpi, jpj) 
     366               CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_1d     (1:nbpb,jk), jpi, jpj) 
     367               CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_1d     (1:nbpb,jk), jpi, jpj) 
    368368            END DO 
    369369            DO jk = 1, nlay_i 
    370                CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_b     (1:nbpb,jk), jpi, jpj) 
    371                CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_b     (1:nbpb,jk), jpi, jpj) 
    372                CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_b     (1:nbpb,jk), jpi, jpj) 
     370               CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_1d     (1:nbpb,jk), jpi, jpj) 
     371               CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_1d     (1:nbpb,jk), jpi, jpj) 
     372               CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_1d     (1:nbpb,jk), jpi, jpj) 
    373373            END DO 
    374374               CALL tab_1d_2d( nbpb, qlead         , npb, qlead_1d  (1:nbpb)   , jpi, jpj ) 
     
    507507      DO jk = 1, nlay_i 
    508508         DO ji = kideb, kiut 
    509             ztmelts       =  -tmut * s_i_b(ji,jk) + rtt 
     509            ztmelts       =  -tmut * s_i_1d(ji,jk) + rtt 
    510510            ! Conversion q(S,T) -> T (second order equation) 
    511511            zaaa          =  cpic 
    512             zbbb          =  ( rcp - cpic ) * ( ztmelts - rtt ) + q_i_b(ji,jk) / rhoic - lfus 
     512            zbbb          =  ( rcp - cpic ) * ( ztmelts - rtt ) + q_i_1d(ji,jk) / rhoic - lfus 
    513513            zccc          =  lfus * ( ztmelts - rtt ) 
    514514            zdiscrim      =  SQRT( MAX( zbbb * zbbb - 4._wp * zaaa * zccc, 0._wp ) ) 
    515             t_i_b(ji,jk)  =  rtt - ( zbbb + zdiscrim ) / ( 2._wp * zaaa ) 
     515            t_i_1d(ji,jk)  =  rtt - ( zbbb + zdiscrim ) / ( 2._wp * zaaa ) 
    516516             
    517517            ! mask temperature 
    518             zswitch      =  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_i_b(ji) ) )  
    519             t_i_b(ji,jk) =  zswitch * t_i_b(ji,jk) + ( 1._wp - zswitch ) * rtt 
     518            zswitch      =  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_i_1d(ji) ) )  
     519            t_i_1d(ji,jk) =  zswitch * t_i_1d(ji,jk) + ( 1._wp - zswitch ) * rtt 
    520520         END DO  
    521521      END DO  
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r4688 r4872  
    156156      DO jk = 1, nlay_i 
    157157         DO ji = kideb, kiut 
    158             h_i_old (ji,jk) = ht_i_b(ji) / REAL( nlay_i ) 
    159             qh_i_old(ji,jk) = q_i_b(ji,jk) * h_i_old(ji,jk) 
     158            h_i_old (ji,jk) = ht_i_1d(ji) / REAL( nlay_i ) 
     159            qh_i_old(ji,jk) = q_i_1d(ji,jk) * h_i_old(ji,jk) 
    160160         ENDDO 
    161161      ENDDO 
     
    166166      ! 
    167167      DO ji = kideb, kiut 
    168          zinda         = 1._wp - MAX(  0._wp , SIGN( 1._wp , - ht_s_b(ji) ) ) 
     168         zinda         = 1._wp - MAX(  0._wp , SIGN( 1._wp , - ht_s_1d(ji) ) ) 
    169169         ztmelts       = zinda * rtt + ( 1._wp - zinda ) * rtt 
    170170 
     
    172172         zf_tt(ji) = fc_bo_i(ji) + fhtur_1d(ji) + fhld_1d(ji)  
    173173 
    174          zq_su (ji) = MAX( 0._wp, zfdum     * rdt_ice ) * MAX( 0._wp , SIGN( 1._wp, t_su_b(ji) - ztmelts ) ) 
     174         zq_su (ji) = MAX( 0._wp, zfdum     * rdt_ice ) * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - ztmelts ) ) 
    175175         zq_bo (ji) = MAX( 0._wp, zf_tt(ji) * rdt_ice ) 
    176176      END DO 
     
    182182      !------------------------------------------------------------------------------! 
    183183      DO ji = kideb, kiut 
    184          IF( t_s_b(ji,1) > rtt ) THEN !!! Internal melting 
     184         IF( t_s_1d(ji,1) > rtt ) THEN !!! Internal melting 
    185185            ! Contribution to heat flux to the ocean [W.m-2], < 0   
    186             hfx_res_1d(ji) = hfx_res_1d(ji) + q_s_b(ji,1) * ht_s_b(ji) * a_i_b(ji) * r1_rdtice 
     186            hfx_res_1d(ji) = hfx_res_1d(ji) + q_s_1d(ji,1) * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
    187187            ! Contribution to mass flux 
    188             wfx_snw_1d(ji) = wfx_snw_1d(ji) + rhosn * ht_s_b(ji) * a_i_b(ji) * r1_rdtice 
     188            wfx_snw_1d(ji) = wfx_snw_1d(ji) + rhosn * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
    189189            ! updates 
    190             ht_s_b(ji)   = 0._wp 
    191             q_s_b (ji,1) = 0._wp 
    192             t_s_b (ji,1) = rtt 
     190            ht_s_1d(ji)   = 0._wp 
     191            q_s_1d (ji,1) = 0._wp 
     192            t_s_1d (ji,1) = rtt 
    193193         END IF 
    194194      END DO 
     
    199199      ! 
    200200      DO ji = kideb, kiut      
    201          zh_s(ji) = ht_s_b(ji) / REAL( nlay_s ) 
     201         zh_s(ji) = ht_s_1d(ji) / REAL( nlay_s ) 
    202202      END DO 
    203203      ! 
    204204      DO jk = 1, nlay_s 
    205205         DO ji = kideb, kiut 
    206             zqh_s(ji) =  zqh_s(ji) + q_s_b(ji,jk) * zh_s(ji) 
     206            zqh_s(ji) =  zqh_s(ji) + q_s_1d(ji,jk) * zh_s(ji) 
    207207         END DO 
    208208      END DO 
     
    210210      DO jk = 1, nlay_i 
    211211         DO ji = kideb, kiut 
    212             zh_i(ji,jk) = ht_i_b(ji) / REAL( nlay_i ) 
    213             zqh_i(ji)   = zqh_i(ji) + q_i_b(ji,jk) * zh_i(ji,jk) 
     212            zh_i(ji,jk) = ht_i_1d(ji) / REAL( nlay_i ) 
     213            zqh_i(ji)   = zqh_i(ji) + q_i_1d(ji,jk) * zh_i(ji,jk) 
    214214         END DO 
    215215      END DO 
     
    238238         !----------- 
    239239         ! thickness change 
    240          zcoeff = ( 1._wp - ( 1._wp - at_i_b(ji) )**betas ) / at_i_b(ji)  
     240         zcoeff = ( 1._wp - ( 1._wp - at_i_1d(ji) )**betas ) / at_i_1d(ji)  
    241241         zdh_s_pre(ji) = zcoeff * sprecip_1d(ji) * rdt_ice / rhosn 
    242242         ! enthalpy of the precip (>0, J.m-3) (tatm_ice is now in K) 
     
    244244         IF( sprecip_1d(ji) == 0._wp ) zqprec(ji) = 0._wp 
    245245         ! heat flux from snow precip (>0, W.m-2) 
    246          hfx_spr_1d(ji) = hfx_spr_1d(ji) + zdh_s_pre(ji) * a_i_b(ji) * zqprec(ji) * r1_rdtice 
     246         hfx_spr_1d(ji) = hfx_spr_1d(ji) + zdh_s_pre(ji) * a_i_1d(ji) * zqprec(ji) * r1_rdtice 
    247247         ! mass flux, <0 
    248          wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhosn * a_i_b(ji) * zdh_s_pre(ji) * r1_rdtice 
     248         wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_pre(ji) * r1_rdtice 
    249249         ! update thickness 
    250          ht_s_b    (ji) = MAX( 0._wp , ht_s_b(ji) + zdh_s_pre(ji) ) 
     250         ht_s_1d    (ji) = MAX( 0._wp , ht_s_1d(ji) + zdh_s_pre(ji) ) 
    251251 
    252252         !--------------------- 
     
    259259         zdh_s_mel (ji) = MAX( - zdh_s_pre(ji), zdh_s_mel(ji) ) ! bound melting  
    260260         ! heat used to melt snow (W.m-2, >0) 
    261          hfx_snw_1d(ji) = hfx_snw_1d(ji) - zdh_s_mel(ji) * a_i_b(ji) * zqprec(ji) * r1_rdtice 
     261         hfx_snw_1d(ji) = hfx_snw_1d(ji) - zdh_s_mel(ji) * a_i_1d(ji) * zqprec(ji) * r1_rdtice 
    262262         ! snow melting only = water into the ocean (then without snow precip), >0 
    263          wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_b(ji) * zdh_s_mel(ji) * r1_rdtice 
     263         wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_mel(ji) * r1_rdtice 
    264264          
    265265         ! updates available heat + thickness 
    266266         zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdh_s_mel(ji) * zqprec(ji) )       
    267          ht_s_b(ji) = MAX( 0._wp , ht_s_b(ji) + zdh_s_mel(ji) ) 
    268          zh_s  (ji) = ht_s_b(ji) / REAL( nlay_s ) 
     267         ht_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdh_s_mel(ji) ) 
     268         zh_s  (ji) = ht_s_1d(ji) / REAL( nlay_s ) 
    269269 
    270270         ENDIF 
     
    276276         DO ji = kideb, kiut 
    277277            ! thickness change 
    278             zindh            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_b(ji) ) )  
    279             zindq            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - q_s_b(ji,jk) + epsi20 ) )  
    280             zdeltah  (ji,jk) = - zindh * zindq * zq_su(ji) / MAX( q_s_b(ji,jk), epsi20 ) 
     278            zindh            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_1d(ji) ) )  
     279            zindq            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - q_s_1d(ji,jk) + epsi20 ) )  
     280            zdeltah  (ji,jk) = - zindh * zindq * zq_su(ji) / MAX( q_s_1d(ji,jk), epsi20 ) 
    281281            zdeltah  (ji,jk) = MAX( zdeltah(ji,jk) , - zh_s(ji) ) ! bound melting 
    282282            zdh_s_mel(ji)    = zdh_s_mel(ji) + zdeltah(ji,jk)     
    283283            ! heat used to melt snow(W.m-2, >0) 
    284             hfx_snw_1d(ji)   = hfx_snw_1d(ji) - zdeltah(ji,jk) * a_i_b(ji) * q_s_b(ji,jk) * r1_rdtice  
     284            hfx_snw_1d(ji)   = hfx_snw_1d(ji) - zdeltah(ji,jk) * a_i_1d(ji) * q_s_1d(ji,jk) * r1_rdtice  
    285285            ! snow melting only = water into the ocean (then without snow precip) 
    286             wfx_snw_1d(ji)   = wfx_snw_1d(ji) - rhosn * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     286            wfx_snw_1d(ji)   = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    287287 
    288288            ! updates available heat + thickness 
    289             zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * q_s_b(ji,jk) ) 
    290             ht_s_b(ji) = MAX( 0._wp , ht_s_b(ji) + zdeltah(ji,jk) ) 
     289            zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * q_s_1d(ji,jk) ) 
     290            ht_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdeltah(ji,jk) ) 
    291291 
    292292         END DO 
     
    305305         ! forced  mode: snow thickness change due to sublimation 
    306306         DO ji = kideb, kiut 
    307             zdh_s_sub(ji)  =  MAX( - ht_s_b(ji) , - parsub * qla_ice_1d(ji) / ( rhosn * lsub ) * rdt_ice ) 
     307            zdh_s_sub(ji)  =  MAX( - ht_s_1d(ji) , - parsub * qla_ice_1d(ji) / ( rhosn * lsub ) * rdt_ice ) 
    308308            ! Heat flux by sublimation [W.m-2], < 0 
    309309            !      sublimate first snow that had fallen, then pre-existing snow 
    310310            zcoeff         =      ( MAX( zdh_s_sub(ji), - MAX( 0._wp, zdh_s_pre(ji) + zdh_s_mel(ji) ) )   * zqprec(ji) +   & 
    311                &  ( zdh_s_sub(ji) - MAX( zdh_s_sub(ji), - MAX( 0._wp, zdh_s_pre(ji) + zdh_s_mel(ji) ) ) ) * q_s_b(ji,1) )  & 
    312                &  * a_i_b(ji) * r1_rdtice 
     311               &  ( zdh_s_sub(ji) - MAX( zdh_s_sub(ji), - MAX( 0._wp, zdh_s_pre(ji) + zdh_s_mel(ji) ) ) ) * q_s_1d(ji,1) )  & 
     312               &  * a_i_1d(ji) * r1_rdtice 
    313313            hfx_sub_1d(ji) = hfx_sub_1d(ji) + zcoeff 
    314314            ! Mass flux by sublimation 
    315             wfx_sub_1d(ji) =  wfx_sub_1d(ji) - rhosn * a_i_b(ji) * zdh_s_sub(ji) * r1_rdtice 
     315            wfx_sub_1d(ji) =  wfx_sub_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_sub(ji) * r1_rdtice 
    316316            ! new snow thickness 
    317             ht_s_b(ji)     =  MAX( 0._wp , ht_s_b(ji) + zdh_s_sub(ji) ) 
     317            ht_s_1d(ji)     =  MAX( 0._wp , ht_s_1d(ji) + zdh_s_sub(ji) ) 
    318318         END DO 
    319319      ENDIF 
     
    322322      DO ji = kideb, kiut 
    323323         dh_s_tot(ji)   = zdh_s_mel(ji) + zdh_s_pre(ji) + zdh_s_sub(ji) 
    324          zh_s(ji)       = ht_s_b(ji) / REAL( nlay_s ) 
     324         zh_s(ji)       = ht_s_1d(ji) / REAL( nlay_s ) 
    325325      END DO ! ji 
    326326 
     
    332332      DO jk = 1, nlay_s 
    333333         DO ji = kideb,kiut 
    334             zindh  =  MAX(  0._wp , SIGN( 1._wp, - ht_s_b(ji) + epsi20 )  ) 
    335             q_s_b(ji,jk) = ( 1._wp - zindh ) / MAX( ht_s_b(ji), epsi20 ) *             & 
     334            zindh  =  MAX(  0._wp , SIGN( 1._wp, - ht_s_1d(ji) + epsi20 )  ) 
     335            q_s_1d(ji,jk) = ( 1._wp - zindh ) / MAX( ht_s_1d(ji), epsi20 ) *             & 
    336336              &            ( (   MAX( 0._wp, dh_s_tot(ji) )              ) * zqprec(ji) +  & 
    337               &              ( - MAX( 0._wp, dh_s_tot(ji) ) + ht_s_b(ji) ) * rhosn * ( cpic * ( rtt - t_s_b(ji,jk) ) + lfus ) ) 
    338             zq_s(ji)     =  zq_s(ji) + q_s_b(ji,jk) 
     337              &              ( - MAX( 0._wp, dh_s_tot(ji) ) + ht_s_1d(ji) ) * rhosn * ( cpic * ( rtt - t_s_1d(ji,jk) ) + lfus ) ) 
     338            zq_s(ji)     =  zq_s(ji) + q_s_1d(ji,jk) 
    339339         END DO 
    340340      END DO 
     
    346346      DO jk = 1, nlay_i 
    347347         DO ji = kideb, kiut  
    348             zEi            = - q_i_b(ji,jk) / rhoic                ! Specific enthalpy of layer k [J/kg, <0] 
    349  
    350             ztmelts        = - tmut * s_i_b(ji,jk) + rtt           ! Melting point of layer k [K] 
     348            zEi            = - q_i_1d(ji,jk) / rhoic                ! Specific enthalpy of layer k [J/kg, <0] 
     349 
     350            ztmelts        = - tmut * s_i_1d(ji,jk) + rtt           ! Melting point of layer k [K] 
    351351 
    352352            zEw            =    rcp * ( ztmelts - rt0 )            ! Specific enthalpy of resulting meltwater [J/kg, <0] 
     
    368368            zQm            = zfmdt * zEw                           ! Energy of the melt water sent to the ocean [J/m2, <0] 
    369369 
    370             ! Contribution to salt flux (clem: using sm_i_b and not s_i_b(jk) is ok) 
    371             sfx_sum_1d(ji)   = sfx_sum_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
     370            ! Contribution to salt flux (clem: using sm_i_1d and not s_i_1d(jk) is ok) 
     371            sfx_sum_1d(ji)   = sfx_sum_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
    372372 
    373373            ! Contribution to heat flux [W.m-2], < 0 
    374             hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice 
     374            hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice 
    375375 
    376376            ! Total heat flux used in this process [W.m-2], > 0   
    377             hfx_sum_1d(ji) = hfx_sum_1d(ji) - zfmdt * a_i_b(ji) * zdE * r1_rdtice 
     377            hfx_sum_1d(ji) = hfx_sum_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice 
    378378 
    379379            ! Contribution to mass flux 
    380             wfx_sum_1d(ji) =  wfx_sum_1d(ji) - rhoic * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     380            wfx_sum_1d(ji) =  wfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    381381            
    382382            ! record which layers have disappeared (for bottom melting)  
     
    388388 
    389389            ! update heat content (J.m-2) and layer thickness 
    390             qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_b(ji,jk) 
     390            qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_1d(ji,jk) 
    391391            h_i_old (ji,jk) = h_i_old (ji,jk) + zdeltah(ji,jk) 
    392392         END DO 
     
    394394      ! update ice thickness 
    395395      DO ji = kideb, kiut 
    396          ht_i_b(ji) =  MAX( 0._wp , ht_i_b(ji) + dh_i_surf(ji) ) 
     396         ht_i_1d(ji) =  MAX( 0._wp , ht_i_1d(ji) + dh_i_surf(ji) ) 
    397397      END DO 
    398398 
     
    424424      !clem debug. Just to be sure that enthalpy at nlay_i+1 is null 
    425425      DO ji = kideb, kiut 
    426          q_i_b(ji,nlay_i+1) = 0._wp 
     426         q_i_1d(ji,nlay_i+1) = 0._wp 
    427427      END DO 
    428428 
     
    446446 
    447447               s_i_new(ji)        = zswitch_sal * zfracs * sss_m(ii,ij)  &  ! New ice salinity 
    448                                   + ( 1. - zswitch_sal ) * sm_i_b(ji)  
     448                                  + ( 1. - zswitch_sal ) * sm_i_1d(ji)  
    449449               ! New ice growth 
    450450               ztmelts            = - tmut * s_i_new(ji) + rtt          ! New ice melting point (K) 
    451451 
    452                zt_i_new           = zswitch_sal * t_bo_b(ji) + ( 1. - zswitch_sal) * t_i_b(ji, nlay_i) 
     452               zt_i_new           = zswitch_sal * t_bo_1d(ji) + ( 1. - zswitch_sal) * t_i_1d(ji, nlay_i) 
    453453                
    454454               zEi                = cpic * ( zt_i_new - ztmelts ) &     ! Specific enthalpy of forming ice (J/kg, <0)       
     
    456456                  &               + rcp  * ( ztmelts-rtt )           
    457457 
    458                zEw                = rcp  * ( t_bo_b(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
     458               zEw                = rcp  * ( t_bo_1d(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
    459459 
    460460               zdE                = zEi - zEw                           ! Specific enthalpy difference (J/kg, <0) 
     
    462462               dh_i_bott(ji)      = rdt_ice * MAX( 0._wp , zf_tt(ji) / ( zdE * rhoic ) ) 
    463463 
    464                q_i_b(ji,nlay_i+1) = -zEi * rhoic                        ! New ice energy of melting (J/m3, >0) 
     464               q_i_1d(ji,nlay_i+1) = -zEi * rhoic                        ! New ice energy of melting (J/m3, >0) 
    465465                
    466466            ENDIF ! fc_bo_i 
     
    477477            ztmelts        = - tmut * s_i_new(ji) + rtt          ! New ice melting point (K) 
    478478             
    479             zt_i_new       = zswitch_sal * t_bo_b(ji) + ( 1. - zswitch_sal) * t_i_b(ji, nlay_i) 
     479            zt_i_new       = zswitch_sal * t_bo_1d(ji) + ( 1. - zswitch_sal) * t_i_1d(ji, nlay_i) 
    480480             
    481481            zEi            = cpic * ( zt_i_new - ztmelts ) &     ! Specific enthalpy of forming ice (J/kg, <0)       
     
    483483               &               + rcp  * ( ztmelts-rtt )           
    484484             
    485             zEw            = rcp  * ( t_bo_b(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
     485            zEw            = rcp  * ( t_bo_1d(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
    486486             
    487487            zdE            = zEi - zEw                           ! Specific enthalpy difference (J/kg, <0) 
    488488             
    489489            ! Contribution to heat flux to the ocean [W.m-2], >0   
    490             hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice 
     490            hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice 
    491491 
    492492            ! Total heat flux used in this process [W.m-2], <0   
    493             hfx_bog_1d(ji) = hfx_bog_1d(ji) - zfmdt * a_i_b(ji) * zdE * r1_rdtice 
     493            hfx_bog_1d(ji) = hfx_bog_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice 
    494494             
    495495            ! Contribution to salt flux, <0 
    496             sfx_bog_1d(ji) = sfx_bog_1d(ji) + s_i_new(ji) * a_i_b(ji) * zfmdt * r1_rdtice 
     496            sfx_bog_1d(ji) = sfx_bog_1d(ji) + s_i_new(ji) * a_i_1d(ji) * zfmdt * r1_rdtice 
    497497 
    498498            ! Contribution to mass flux, <0 
    499             wfx_bog_1d(ji) =  wfx_bog_1d(ji) - rhoic * a_i_b(ji) * dh_i_bott(ji) * r1_rdtice 
     499            wfx_bog_1d(ji) =  wfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bott(ji) * r1_rdtice 
    500500 
    501501            ! update heat content (J.m-2) and layer thickness 
    502             qh_i_old(ji,nlay_i+1) = qh_i_old(ji,nlay_i+1) + dh_i_bott(ji) * q_i_b(ji,nlay_i+1) 
     502            qh_i_old(ji,nlay_i+1) = qh_i_old(ji,nlay_i+1) + dh_i_bott(ji) * q_i_1d(ji,nlay_i+1) 
    503503            h_i_old (ji,nlay_i+1) = h_i_old (ji,nlay_i+1) + dh_i_bott(ji) 
    504504         ENDIF 
     
    513513            IF(  zf_tt(ji)  >=  0._wp  .AND. jk > icount(ji) ) THEN   ! do not calculate where layer has already disappeared from surface melting  
    514514 
    515                ztmelts = - tmut * s_i_b(ji,jk) + rtt  ! Melting point of layer jk (K) 
    516  
    517                IF( t_i_b(ji,jk) >= ztmelts ) THEN !!! Internal melting 
     515               ztmelts = - tmut * s_i_1d(ji,jk) + rtt  ! Melting point of layer jk (K) 
     516 
     517               IF( t_i_1d(ji,jk) >= ztmelts ) THEN !!! Internal melting 
    518518                  zintermelt(ji)    = 1._wp 
    519519 
    520                   zEi               = - q_i_b(ji,jk) / rhoic        ! Specific enthalpy of melting ice (J/kg, <0) 
    521  
    522                   !!zEw               = rcp * ( t_i_b(ji,jk) - rtt )  ! Specific enthalpy of meltwater at T = t_i_b (J/kg, <0) 
     520                  zEi               = - q_i_1d(ji,jk) / rhoic        ! Specific enthalpy of melting ice (J/kg, <0) 
     521 
     522                  !!zEw               = rcp * ( t_i_1d(ji,jk) - rtt )  ! Specific enthalpy of meltwater at T = t_i_1d (J/kg, <0) 
    523523 
    524524                  zdE               = 0._wp                         ! Specific enthalpy difference   (J/kg, <0) 
     
    533533 
    534534                  ! Contribution to heat flux to the ocean [W.m-2], <0 (ice enthalpy zEi is "sent" to the ocean)  
    535                   hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_b(ji) * zEi * r1_rdtice 
    536  
    537                   ! Contribution to salt flux (clem: using sm_i_b and not s_i_b(jk) is ok) 
    538                   sfx_res_1d(ji) = sfx_res_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
     535                  hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_rdtice 
     536 
     537                  ! Contribution to salt flux (clem: using sm_i_1d and not s_i_1d(jk) is ok) 
     538                  sfx_res_1d(ji) = sfx_res_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
    539539                                     
    540540                  ! Contribution to mass flux 
    541                   wfx_res_1d(ji) =  wfx_res_1d(ji) - rhoic * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     541                  wfx_res_1d(ji) =  wfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    542542 
    543543                  ! update heat content (J.m-2) and layer thickness 
    544                   qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_b(ji,jk) 
     544                  qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_1d(ji,jk) 
    545545                  h_i_old (ji,jk) = h_i_old (ji,jk) + zdeltah(ji,jk) 
    546546 
    547547               ELSE                               !!! Basal melting 
    548548 
    549                   zEi               = - q_i_b(ji,jk) / rhoic ! Specific enthalpy of melting ice (J/kg, <0) 
     549                  zEi               = - q_i_1d(ji,jk) / rhoic ! Specific enthalpy of melting ice (J/kg, <0) 
    550550 
    551551                  zEw               = rcp * ( ztmelts - rtt )! Specific enthalpy of meltwater (J/kg, <0) 
     
    568568 
    569569                  ! Contribution to heat flux to the ocean [W.m-2], <0   
    570                   hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice 
    571  
    572                   ! Contribution to salt flux (clem: using sm_i_b and not s_i_b(jk) is ok) 
    573                   sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
     570                  hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice 
     571 
     572                  ! Contribution to salt flux (clem: using sm_i_1d and not s_i_1d(jk) is ok) 
     573                  sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
    574574                   
    575575                  ! Total heat flux used in this process [W.m-2], >0   
    576                   hfx_bom_1d(ji) = hfx_bom_1d(ji) - zfmdt * a_i_b(ji) * zdE * r1_rdtice 
     576                  hfx_bom_1d(ji) = hfx_bom_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice 
    577577                   
    578578                  ! Contribution to mass flux 
    579                   wfx_bom_1d(ji) =  wfx_bom_1d(ji) - rhoic * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     579                  wfx_bom_1d(ji) =  wfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    580580 
    581581                  ! update heat content (J.m-2) and layer thickness 
    582                   qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_b(ji,jk) 
     582                  qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_1d(ji,jk) 
    583583                  h_i_old (ji,jk) = h_i_old (ji,jk) + zdeltah(ji,jk) 
    584584               ENDIF 
     
    603603! 
    604604!               ! excessive energy is sent to lateral ablation 
    605 !               zinda = MAX( 0._wp, SIGN( 1._wp , 1._wp - at_i_b(ji) - epsi20 ) ) 
    606 !               zq_1cat(ji) =  zinda * rhoic * lfus * at_i_b(ji) / MAX( 1._wp - at_i_b(ji) , epsi20 ) * zdvres ! J.m-2 >=0 
     605!               zinda = MAX( 0._wp, SIGN( 1._wp , 1._wp - at_i_1d(ji) - epsi20 ) ) 
     606!               zq_1cat(ji) =  zinda * rhoic * lfus * at_i_1d(ji) / MAX( 1._wp - at_i_1d(ji) , epsi20 ) * zdvres ! J.m-2 >=0 
    607607! 
    608608!               ! correct salt and mass fluxes 
    609 !               sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdvres * rhoic * r1_rdtice ! this is only a raw approximation 
    610 !               wfx_bom_1d(ji) = wfx_bom_1d(ji) - rhoic * a_i_b(ji) * zdvres * r1_rdtice 
     609!               sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdvres * rhoic * r1_rdtice ! this is only a raw approximation 
     610!               wfx_bom_1d(ji) = wfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdvres * r1_rdtice 
    611611!            ENDIF 
    612612!         END DO 
     
    617617      !------------------------------------------- 
    618618      DO ji = kideb, kiut 
    619          ht_i_b(ji) =  MAX( 0._wp , ht_i_b(ji) + dh_i_bott(ji) ) 
     619         ht_i_1d(ji) =  MAX( 0._wp , ht_i_1d(ji) + dh_i_bott(ji) ) 
    620620      END DO   
    621621 
     
    628628      DO ji = kideb, kiut 
    629629         zq_rema(ji)     = zq_su(ji) + zq_bo(ji)  
    630 !         zindh           = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_b(ji) ) )   ! =1 if snow 
     630!         zindh           = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_1d(ji) ) )   ! =1 if snow 
    631631!         zindq           = 1._wp - MAX( 0._wp, SIGN( 1._wp, - zq_s(ji) + epsi20 ) ) 
    632632!         zdeltah  (ji,1) = - zindh * zindq * zq_rema(ji) / MAX( zq_s(ji), epsi20 ) 
    633 !         zdeltah  (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - ht_s_b(ji) ) ) ! bound melting 
     633!         zdeltah  (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - ht_s_1d(ji) ) ) ! bound melting 
    634634!         zdh_s_mel(ji)   = zdh_s_mel(ji) + zdeltah(ji,1)     
    635635!         dh_s_tot (ji)   = dh_s_tot(ji) + zdeltah(ji,1) 
    636 !         ht_s_b   (ji)   = ht_s_b(ji)   + zdeltah(ji,1) 
     636!         ht_s_1d   (ji)   = ht_s_1d(ji)   + zdeltah(ji,1) 
    637637!         
    638638!         zq_rema(ji)     = zq_rema(ji) + zdeltah(ji,1) * zq_s(ji)                ! update available heat (J.m-2) 
    639639!         ! heat used to melt snow 
    640 !         hfx_snw_1d(ji)  = hfx_snw_1d(ji) - zdeltah(ji,1) * a_i_b(ji) * zq_s(ji) * r1_rdtice ! W.m-2 (>0) 
     640!         hfx_snw_1d(ji)  = hfx_snw_1d(ji) - zdeltah(ji,1) * a_i_1d(ji) * zq_s(ji) * r1_rdtice ! W.m-2 (>0) 
    641641!         ! Contribution to mass flux 
    642 !         wfx_snw_1d(ji)  =  wfx_snw_1d(ji) - rhosn * a_i_b(ji) * zdeltah(ji,1) * r1_rdtice 
     642!         wfx_snw_1d(ji)  =  wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice 
    643643!     
    644644         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
    645645         ! Remaining heat flux (W.m-2) is sent to the ocean heat budget 
    646          hfx_out(ii,ij)  = hfx_out(ii,ij) + ( zq_1cat(ji) + zq_rema(ji) * a_i_b(ji) ) * r1_rdtice 
     646         hfx_out(ii,ij)  = hfx_out(ii,ij) + ( zq_1cat(ji) + zq_rema(ji) * a_i_1d(ji) ) * r1_rdtice 
    647647 
    648648         IF( ln_nicep .AND. zq_rema(ji) < 0. .AND. lwp ) WRITE(numout,*) 'ALERTE zq_rema <0 = ', zq_rema(ji) 
     
    657657      DO ji = kideb, kiut 
    658658         ! 
    659          dh_snowice(ji) = MAX(  0._wp , ( rhosn * ht_s_b(ji) + (rhoic-rau0) * ht_i_b(ji) ) / ( rhosn+rau0-rhoic )  ) 
    660  
    661          ht_i_b(ji)     = ht_i_b(ji) + dh_snowice(ji) 
    662          ht_s_b(ji)     = ht_s_b(ji) - dh_snowice(ji) 
     659         dh_snowice(ji) = MAX(  0._wp , ( rhosn * ht_s_1d(ji) + (rhoic-rau0) * ht_i_1d(ji) ) / ( rhosn+rau0-rhoic )  ) 
     660 
     661         ht_i_1d(ji)     = ht_i_1d(ji) + dh_snowice(ji) 
     662         ht_s_1d(ji)     = ht_s_1d(ji) - dh_snowice(ji) 
    663663 
    664664         ! Salinity of snow ice 
    665665         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
    666          zs_snic = zswitch_sal * sss_m(ii,ij) * ( rhoic - rhosn ) / rhoic + ( 1. - zswitch_sal ) * sm_i_b(ji) 
     666         zs_snic = zswitch_sal * sss_m(ii,ij) * ( rhoic - rhosn ) / rhoic + ( 1. - zswitch_sal ) * sm_i_1d(ji) 
    667667 
    668668         ! entrapment during snow ice formation 
    669669         ! new salinity difference stored (to be used in limthd_ent.F90) 
    670670         IF (  num_sal == 2  ) THEN 
    671             zswitch = MAX( 0._wp , SIGN( 1._wp , ht_i_b(ji) - epsi10 ) ) 
     671            zswitch = MAX( 0._wp , SIGN( 1._wp , ht_i_1d(ji) - epsi10 ) ) 
    672672            ! salinity dif due to snow-ice formation 
    673             dsm_i_si_1d(ji) = ( zs_snic - sm_i_b(ji) ) * dh_snowice(ji) / MAX( ht_i_b(ji), epsi10 ) * zswitch      
     673            dsm_i_si_1d(ji) = ( zs_snic - sm_i_1d(ji) ) * dh_snowice(ji) / MAX( ht_i_1d(ji), epsi10 ) * zswitch      
    674674            ! salinity dif due to bottom growth  
    675675            IF (  zf_tt(ji)  < 0._wp ) THEN 
    676                dsm_i_se_1d(ji) = ( s_i_new(ji) - sm_i_b(ji) ) * dh_i_bott(ji) / MAX( ht_i_b(ji), epsi10 ) * zswitch 
     676               dsm_i_se_1d(ji) = ( s_i_new(ji) - sm_i_1d(ji) ) * dh_i_bott(ji) / MAX( ht_i_1d(ji), epsi10 ) * zswitch 
    677677            ENDIF 
    678678         ENDIF 
     
    686686          
    687687         ! Contribution to heat flux 
    688          hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice  
     688         hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice  
    689689 
    690690         ! Contribution to salt flux 
    691          sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_m(ii,ij) * a_i_b(ji) * zfmdt * r1_rdtice  
     691         sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_m(ii,ij) * a_i_1d(ji) * zfmdt * r1_rdtice  
    692692           
    693693         ! Contribution to mass flux 
    694694         ! All snow is thrown in the ocean, and seawater is taken to replace the volume 
    695          wfx_sni_1d(ji) = wfx_sni_1d(ji) - a_i_b(ji) * dh_snowice(ji) * rhoic * r1_rdtice 
    696          wfx_snw_1d(ji) = wfx_snw_1d(ji) + a_i_b(ji) * dh_snowice(ji) * rhosn * r1_rdtice 
     695         wfx_sni_1d(ji) = wfx_sni_1d(ji) - a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_rdtice 
     696         wfx_snw_1d(ji) = wfx_snw_1d(ji) + a_i_1d(ji) * dh_snowice(ji) * rhosn * r1_rdtice 
    697697 
    698698         ! update heat content (J.m-2) and layer thickness 
    699          qh_i_old(ji,0) = qh_i_old(ji,0) + dh_snowice(ji) * q_s_b(ji,1) + zfmdt * zEw 
     699         qh_i_old(ji,0) = qh_i_old(ji,0) + dh_snowice(ji) * q_s_1d(ji,1) + zfmdt * zEw 
    700700         h_i_old (ji,0) = h_i_old (ji,0) + dh_snowice(ji) 
    701701          
    702702         ! Total ablation (to debug) 
    703          IF( ht_i_b(ji) <= 0._wp )   a_i_b(ji) = 0._wp 
     703         IF( ht_i_1d(ji) <= 0._wp )   a_i_1d(ji) = 0._wp 
    704704 
    705705      END DO !ji 
     
    711711      !clem bug: we should take snow into account here 
    712712      DO ji = kideb, kiut 
    713          zindh    =  1.0 - MAX( 0._wp , SIGN( 1._wp , - ht_i_b(ji) ) )  
    714          t_su_b(ji) =  zindh * t_su_b(ji) + ( 1.0 - zindh ) * rtt 
     713         zindh    =  1.0 - MAX( 0._wp , SIGN( 1._wp , - ht_i_1d(ji) ) )  
     714         t_su_1d(ji) =  zindh * t_su_1d(ji) + ( 1.0 - zindh ) * rtt 
    715715      END DO  ! ji 
    716716 
     
    718718         DO ji = kideb,kiut 
    719719            ! mask enthalpy 
    720             zinda        =  MAX(  0._wp , SIGN( 1._wp, - ht_s_b(ji) )  ) 
    721             q_s_b(ji,jk) = ( 1.0 - zinda ) * q_s_b(ji,jk) 
    722             ! recalculate t_s_b from q_s_b 
    723             t_s_b(ji,jk) = rtt + ( 1._wp - zinda ) * ( - q_s_b(ji,jk) / ( rhosn * cpic ) + lfus / cpic ) 
     720            zinda        =  MAX(  0._wp , SIGN( 1._wp, - ht_s_1d(ji) )  ) 
     721            q_s_1d(ji,jk) = ( 1.0 - zinda ) * q_s_1d(ji,jk) 
     722            ! recalculate t_s_1d from q_s_1d 
     723            t_s_1d(ji,jk) = rtt + ( 1._wp - zinda ) * ( - q_s_1d(ji,jk) / ( rhosn * cpic ) + lfus / cpic ) 
    724724         END DO 
    725725      END DO 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r4870 r4872  
    7575      !! 
    7676      !! ** Inputs / Ouputs : (global commons) 
    77       !!           surface temperature : t_su_b 
    78       !!           ice/snow temperatures   : t_i_b, t_s_b 
    79       !!           ice salinities          : s_i_b 
     77      !!           surface temperature : t_su_1d 
     78      !!           ice/snow temperatures   : t_i_1d, t_s_1d 
     79      !!           ice salinities          : s_i_1d 
    8080      !!           number of layers in the ice/snow: nlay_i, nlay_s 
    8181      !!           profile of the ice/snow layers : z_i, z_s 
    82       !!           total ice/snow thickness : ht_i_b, ht_s_b 
     82      !!           total ice/snow thickness : ht_i_1d, ht_s_1d 
    8383      !! 
    8484      !! ** External :  
     
    114114      REAL(wp) ::   zerritmax   ! current maximal error on temperature  
    115115      REAL(wp), POINTER, DIMENSION(:) ::   ztfs        ! ice melting point 
    116       REAL(wp), POINTER, DIMENSION(:) ::   ztsuold     ! old surface temperature (before the iterative procedure ) 
    117       REAL(wp), POINTER, DIMENSION(:) ::   ztsuoldit   ! surface temperature at previous iteration 
     116      REAL(wp), POINTER, DIMENSION(:) ::   ztsu     ! old surface temperature (before the iterative procedure ) 
     117      REAL(wp), POINTER, DIMENSION(:) ::   ztsubit     ! surface temperature at previous iteration 
    118118      REAL(wp), POINTER, DIMENSION(:) ::   zh_i        ! ice layer thickness 
    119119      REAL(wp), POINTER, DIMENSION(:) ::   zh_s        ! snow layer thickness 
     
    129129      REAL(wp), POINTER, DIMENSION(:,:) ::   zradab_i    ! Radiation absorbed in the ice 
    130130      REAL(wp), POINTER, DIMENSION(:,:) ::   zkappa_i    ! Kappa factor in the ice 
    131       REAL(wp), POINTER, DIMENSION(:,:) ::   ztiold      ! Old temperature in the ice 
     131      REAL(wp), POINTER, DIMENSION(:,:) ::   zti      ! Old temperature in the ice 
    132132      REAL(wp), POINTER, DIMENSION(:,:) ::   zeta_i      ! Eta factor in the ice 
    133133      REAL(wp), POINTER, DIMENSION(:,:) ::   ztitemp     ! Temporary temperature in the ice to check the convergence 
     
    137137      REAL(wp), POINTER, DIMENSION(:,:) ::   zradab_s    ! Radiation absorbed in the snow 
    138138      REAL(wp), POINTER, DIMENSION(:,:) ::   zkappa_s    ! Kappa factor in the snow 
    139       REAL(wp), POINTER, DIMENSION(:,:) ::   zeta_s       ! Eta factor in the snow 
    140       REAL(wp), POINTER, DIMENSION(:,:) ::   ztstemp      ! Temporary temperature in the snow to check the convergence 
    141       REAL(wp), POINTER, DIMENSION(:,:) ::   ztsold       ! Temporary temperature in the snow 
    142       REAL(wp), POINTER, DIMENSION(:,:) ::   z_s          ! Vertical cotes of the layers in the snow 
    143       REAL(wp), POINTER, DIMENSION(:,:) ::   zindterm   ! Independent term 
    144       REAL(wp), POINTER, DIMENSION(:,:) ::   zindtbis   ! temporary independent term 
     139      REAL(wp), POINTER, DIMENSION(:,:) ::   zeta_s      ! Eta factor in the snow 
     140      REAL(wp), POINTER, DIMENSION(:,:) ::   ztstemp     ! Temporary temperature in the snow to check the convergence 
     141      REAL(wp), POINTER, DIMENSION(:,:) ::   ztsb        ! Temporary temperature in the snow 
     142      REAL(wp), POINTER, DIMENSION(:,:) ::   z_s         ! Vertical cotes of the layers in the snow 
     143      REAL(wp), POINTER, DIMENSION(:,:) ::   zindterm    ! Independent term 
     144      REAL(wp), POINTER, DIMENSION(:,:) ::   zindtbis    ! temporary independent term 
    145145      REAL(wp), POINTER, DIMENSION(:,:) ::   zdiagbis 
    146       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrid   ! tridiagonal system terms 
     146      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrid     ! tridiagonal system terms 
    147147      ! diag errors on heat 
    148148      REAL(wp), POINTER, DIMENSION(:) :: zdq, zq_ini 
     
    151151      !  
    152152      CALL wrk_alloc( jpij, numeqmin, numeqmax, isnow ) 
    153       CALL wrk_alloc( jpij, ztfs, ztsuold, ztsuoldit, zh_i, zh_s, zfsw ) 
     153      CALL wrk_alloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    154154      CALL wrk_alloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zhsu ) 
    155       CALL wrk_alloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztiold, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0) 
    156       CALL wrk_alloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsold, zeta_s, ztstemp, z_s, kjstart=0) 
     155      CALL wrk_alloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0) 
     156      CALL wrk_alloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0) 
    157157      CALL wrk_alloc( jpij, jkmax+2, zindterm, zindtbis, zdiagbis  ) 
    158158      CALL wrk_alloc( jpij, jkmax+2, 3, ztrid ) 
     
    163163      zdq(:) = 0._wp ; zq_ini(:) = 0._wp       
    164164      DO ji = kideb, kiut 
    165          zq_ini(ji) = ( SUM( q_i_b(ji,1:nlay_i) ) * ht_i_b(ji) / REAL( nlay_i ) +  & 
    166             &           SUM( q_s_b(ji,1:nlay_s) ) * ht_s_b(ji) / REAL( nlay_s ) )  
     165         zq_ini(ji) = ( SUM( q_i_1d(ji,1:nlay_i) ) * ht_i_1d(ji) / REAL( nlay_i ) +  & 
     166            &           SUM( q_s_1d(ji,1:nlay_s) ) * ht_s_1d(ji) / REAL( nlay_s ) )  
    167167      END DO 
    168168 
     
    173173      DO ji = kideb , kiut 
    174174         ! is there snow or not 
    175          isnow(ji)= NINT(  1._wp - MAX( 0._wp , SIGN(1._wp, - ht_s_b(ji) ) )  ) 
     175         isnow(ji)= NINT(  1._wp - MAX( 0._wp , SIGN(1._wp, - ht_s_1d(ji) ) )  ) 
    176176         ! surface temperature of fusion 
    177177         ztfs(ji) = REAL( isnow(ji) ) * rtt + REAL( 1 - isnow(ji) ) * rtt 
    178178         ! layer thickness 
    179          zh_i(ji) = ht_i_b(ji) / REAL( nlay_i ) 
    180          zh_s(ji) = ht_s_b(ji) / REAL( nlay_s ) 
     179         zh_i(ji) = ht_i_1d(ji) / REAL( nlay_i ) 
     180         zh_s(ji) = ht_s_1d(ji) / REAL( nlay_s ) 
    181181      END DO 
    182182 
     
    190190      DO jk = 1, nlay_s            ! vert. coord of the up. lim. of the layer-th snow layer 
    191191         DO ji = kideb , kiut 
    192             z_s(ji,jk) = z_s(ji,jk-1) + ht_s_b(ji) / REAL( nlay_s ) 
     192            z_s(ji,jk) = z_s(ji,jk-1) + ht_s_1d(ji) / REAL( nlay_s ) 
    193193         END DO 
    194194      END DO 
     
    196196      DO jk = 1, nlay_i            ! vert. coord of the up. lim. of the layer-th ice layer 
    197197         DO ji = kideb , kiut 
    198             z_i(ji,jk) = z_i(ji,jk-1) + ht_i_b(ji) / REAL( nlay_i ) 
     198            z_i(ji,jk) = z_i(ji,jk-1) + ht_i_1d(ji) / REAL( nlay_i ) 
    199199         END DO 
    200200      END DO 
     
    217217      DO ji = kideb , kiut 
    218218         ! switches 
    219          isnow(ji) = NINT(  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_s_b(ji) ) )  )  
     219         isnow(ji) = NINT(  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_s_1d(ji) ) )  )  
    220220         ! hs > 0, isnow = 1 
    221221         zhsu (ji) = hnzst  ! threshold for the computation of i0 
    222          zihic(ji) = MAX( 0._wp , 1._wp - ( ht_i_b(ji) / zhsu(ji) ) )      
     222         zihic(ji) = MAX( 0._wp , 1._wp - ( ht_i_1d(ji) / zhsu(ji) ) )      
    223223 
    224224         i0(ji)    = REAL( 1 - isnow(ji) ) * ( fr1_i0_1d(ji) + zihic(ji) * fr2_i0_1d(ji) ) 
     
    227227         !            a function of the cloud cover 
    228228         ! 
    229          !i0(ji)     =  (1.0-FLOAT(isnow(ji)))*3.0/(100*ht_s_b(ji)+10.0) 
     229         !i0(ji)     =  (1.0-FLOAT(isnow(ji)))*3.0/(100*ht_s_1d(ji)+10.0) 
    230230         !formula used in Cice 
    231231      END DO 
     
    272272 
    273273      DO ji = kideb, kiut           ! Radiation transmitted below the ice 
    274          !!!ftr_ice_1d(ji) = ftr_ice_1d(ji) + iatte_1d(ji) * zradtr_i(ji,nlay_i) * a_i_b(ji) / at_i_b(ji) ! clem modif 
     274         !!!ftr_ice_1d(ji) = ftr_ice_1d(ji) + iatte_1d(ji) * zradtr_i(ji,nlay_i) * a_i_1d(ji) / at_i_1d(ji) ! clem modif 
    275275         ftr_ice_1d(ji) = zradtr_i(ji,nlay_i)  
    276276      END DO 
     
    282282      ! 
    283283      DO ji = kideb, kiut        ! Old surface temperature 
    284          ztsuold  (ji) =  t_su_b(ji)                              ! temperature at the beg of iter pr. 
    285          ztsuoldit(ji) =  t_su_b(ji)                              ! temperature at the previous iter 
    286          t_su_b   (ji) =  MIN( t_su_b(ji), ztfs(ji) - ztsu_err )  ! necessary 
     284         ztsub  (ji) =  t_su_1d(ji)                              ! temperature at the beg of iter pr. 
     285         ztsubit(ji) =  t_su_1d(ji)                              ! temperature at the previous iter 
     286         t_su_1d   (ji) =  MIN( t_su_1d(ji), ztfs(ji) - ztsu_err )  ! necessary 
    287287         zerrit   (ji) =  1000._wp                                ! initial value of error 
    288288      END DO 
     
    290290      DO jk = 1, nlay_s       ! Old snow temperature 
    291291         DO ji = kideb , kiut 
    292             ztsold(ji,jk) =  t_s_b(ji,jk) 
     292            ztsb(ji,jk) =  t_s_1d(ji,jk) 
    293293         END DO 
    294294      END DO 
     
    296296      DO jk = 1, nlay_i       ! Old ice temperature 
    297297         DO ji = kideb , kiut 
    298             ztiold(ji,jk) =  t_i_b(ji,jk) 
     298            ztib(ji,jk) =  t_i_1d(ji,jk) 
    299299         END DO 
    300300      END DO 
     
    313313         IF( thcon_i_swi == 0 ) THEN      ! Untersteiner (1964) formula 
    314314            DO ji = kideb , kiut 
    315                ztcond_i(ji,0)        = rcdic + zbeta*s_i_b(ji,1) / MIN(-epsi10,t_i_b(ji,1)-rtt) 
     315               ztcond_i(ji,0)        = rcdic + zbeta*s_i_1d(ji,1) / MIN(-epsi10,t_i_1d(ji,1)-rtt) 
    316316               ztcond_i(ji,0)        = MAX(ztcond_i(ji,0),zkimin) 
    317317            END DO 
    318318            DO jk = 1, nlay_i-1 
    319319               DO ji = kideb , kiut 
    320                   ztcond_i(ji,jk) = rcdic + zbeta*( s_i_b(ji,jk) + s_i_b(ji,jk+1) ) /  & 
    321                      MIN(-2.0_wp * epsi10, t_i_b(ji,jk)+t_i_b(ji,jk+1) - 2.0_wp * rtt) 
     320                  ztcond_i(ji,jk) = rcdic + zbeta*( s_i_1d(ji,jk) + s_i_1d(ji,jk+1) ) /  & 
     321                     MIN(-2.0_wp * epsi10, t_i_1d(ji,jk)+t_i_1d(ji,jk+1) - 2.0_wp * rtt) 
    322322                  ztcond_i(ji,jk) = MAX(ztcond_i(ji,jk),zkimin) 
    323323               END DO 
     
    327327         IF( thcon_i_swi == 1 ) THEN      ! Pringle et al formula included: 2.11 + 0.09 S/T - 0.011.T 
    328328            DO ji = kideb , kiut 
    329                ztcond_i(ji,0) = rcdic + 0.090_wp * s_i_b(ji,1) / MIN( -epsi10, t_i_b(ji,1)-rtt )   & 
    330                   &                   - 0.011_wp * ( t_i_b(ji,1) - rtt )   
     329               ztcond_i(ji,0) = rcdic + 0.090_wp * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1)-rtt )   & 
     330                  &                   - 0.011_wp * ( t_i_1d(ji,1) - rtt )   
    331331               ztcond_i(ji,0) = MAX( ztcond_i(ji,0), zkimin ) 
    332332            END DO 
     
    334334               DO ji = kideb , kiut 
    335335                  ztcond_i(ji,jk) = rcdic +                                                                     &  
    336                      &                 0.090_wp * ( s_i_b(ji,jk) + s_i_b(ji,jk+1) )                          & 
    337                      &                 / MIN(-2.0_wp * epsi10, t_i_b(ji,jk)+t_i_b(ji,jk+1) - 2.0_wp * rtt)   & 
    338                      &               - 0.0055_wp* ( t_i_b(ji,jk) + t_i_b(ji,jk+1) - 2.0*rtt )   
     336                     &                 0.090_wp * ( s_i_1d(ji,jk) + s_i_1d(ji,jk+1) )                          & 
     337                     &                 / MIN(-2.0_wp * epsi10, t_i_1d(ji,jk)+t_i_1d(ji,jk+1) - 2.0_wp * rtt)   & 
     338                     &               - 0.0055_wp* ( t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0*rtt )   
    339339                  ztcond_i(ji,jk) = MAX( ztcond_i(ji,jk), zkimin ) 
    340340               END DO 
    341341            END DO 
    342342            DO ji = kideb , kiut 
    343                ztcond_i(ji,nlay_i) = rcdic + 0.090_wp * s_i_b(ji,nlay_i) / MIN(-epsi10,t_bo_b(ji)-rtt)   & 
    344                   &                        - 0.011_wp * ( t_bo_b(ji) - rtt )   
     343               ztcond_i(ji,nlay_i) = rcdic + 0.090_wp * s_i_1d(ji,nlay_i) / MIN(-epsi10,t_bo_1d(ji)-rtt)   & 
     344                  &                        - 0.011_wp * ( t_bo_1d(ji) - rtt )   
    345345               ztcond_i(ji,nlay_i) = MAX( ztcond_i(ji,nlay_i), zkimin ) 
    346346            END DO 
     
    389389         DO jk = 1, nlay_i 
    390390            DO ji = kideb , kiut 
    391                ztitemp(ji,jk)   = t_i_b(ji,jk) 
    392                zspeche_i(ji,jk) = cpic + zgamma*s_i_b(ji,jk)/ & 
    393                   MAX((t_i_b(ji,jk)-rtt)*(ztiold(ji,jk)-rtt),epsi10) 
     391               ztitemp(ji,jk)   = t_i_1d(ji,jk) 
     392               zspeche_i(ji,jk) = cpic + zgamma*s_i_1d(ji,jk)/ & 
     393                  MAX((t_i_1d(ji,jk)-rtt)*(ztib(ji,jk)-rtt),epsi10) 
    394394               zeta_i(ji,jk)    = rdt_ice / MAX(rhoic*zspeche_i(ji,jk)*zh_i(ji), & 
    395395                  epsi10) 
     
    399399         DO jk = 1, nlay_s 
    400400            DO ji = kideb , kiut 
    401                ztstemp(ji,jk) = t_s_b(ji,jk) 
     401               ztstemp(ji,jk) = t_s_1d(ji,jk) 
    402402               zeta_s(ji,jk)  = rdt_ice / MAX(rhosn*cpic*zh_s(ji),epsi10) 
    403403            END DO 
     
    410410         DO ji = kideb , kiut 
    411411            ! update of the non solar flux according to the update in T_su 
    412             qns_ice_1d(ji) = qns_ice_1d(ji) + dqns_ice_1d(ji) * ( t_su_b(ji) - ztsuoldit(ji) ) 
     412            qns_ice_1d(ji) = qns_ice_1d(ji) + dqns_ice_1d(ji) * ( t_su_1d(ji) - ztsubit(ji) ) 
    413413 
    414414            ! update incoming flux 
     
    448448                  zkappa_i(ji,jk)) 
    449449               ztrid(ji,numeq,3)  =  - zeta_i(ji,jk)*zkappa_i(ji,jk) 
    450                zindterm(ji,numeq) =  ztiold(ji,jk) + zeta_i(ji,jk)* & 
     450               zindterm(ji,numeq) =  ztib(ji,jk) + zeta_i(ji,jk)* & 
    451451                  zradab_i(ji,jk) 
    452452            END DO 
     
    460460               +  zkappa_i(ji,nlay_i-1) ) 
    461461            ztrid(ji,numeq,3)  =  0.0 
    462             zindterm(ji,numeq) =  ztiold(ji,nlay_i) + zeta_i(ji,nlay_i)* & 
     462            zindterm(ji,numeq) =  ztib(ji,nlay_i) + zeta_i(ji,nlay_i)* & 
    463463               ( zradab_i(ji,nlay_i) + zkappa_i(ji,nlay_i)*zg1 & 
    464                *  t_bo_b(ji) )  
     464               *  t_bo_1d(ji) )  
    465465         ENDDO 
    466466 
    467467 
    468468         DO ji = kideb , kiut 
    469             IF ( ht_s_b(ji).gt.0.0 ) THEN 
     469            IF ( ht_s_1d(ji).gt.0.0 ) THEN 
    470470               ! 
    471471               !------------------------------------------------------------------------------| 
     
    480480                     zkappa_s(ji,jk) ) 
    481481                  ztrid(ji,numeq,3)   =  - zeta_s(ji,jk)*zkappa_s(ji,jk) 
    482                   zindterm(ji,numeq)  =  ztsold(ji,jk) + zeta_s(ji,jk)* & 
     482                  zindterm(ji,numeq)  =  ztsb(ji,jk) + zeta_s(ji,jk)* & 
    483483                     zradab_s(ji,jk) 
    484484               END DO 
     
    488488                  ztrid(ji,nlay_s+2,3)    =  0.0 
    489489                  zindterm(ji,nlay_s+2)   =  zindterm(ji,nlay_s+2) + zkappa_i(ji,1)* & 
    490                      t_bo_b(ji)  
     490                     t_bo_1d(ji)  
    491491               ENDIF 
    492492 
    493                IF ( t_su_b(ji) .LT. rtt ) THEN 
     493               IF ( t_su_1d(ji) .LT. rtt ) THEN 
    494494 
    495495                  !------------------------------------------------------------------------------| 
     
    504504                  ztrid(ji,1,2) = dzf(ji) - zg1s*zkappa_s(ji,0) 
    505505                  ztrid(ji,1,3) = zg1s*zkappa_s(ji,0) 
    506                   zindterm(ji,1) = dzf(ji)*t_su_b(ji)   - zf(ji) 
     506                  zindterm(ji,1) = dzf(ji)*t_su_1d(ji)   - zf(ji) 
    507507 
    508508                  !!first layer of snow equation 
     
    510510                  ztrid(ji,2,2)  =  1.0 + zeta_s(ji,1)*(zkappa_s(ji,1) + zkappa_s(ji,0)*zg1s) 
    511511                  ztrid(ji,2,3)  =  - zeta_s(ji,1)* zkappa_s(ji,1) 
    512                   zindterm(ji,2) =  ztsold(ji,1) + zeta_s(ji,1)*zradab_s(ji,1) 
     512                  zindterm(ji,2) =  ztsb(ji,1) + zeta_s(ji,1)*zradab_s(ji,1) 
    513513 
    514514               ELSE  
     
    527527                     zkappa_s(ji,0) * zg1s ) 
    528528                  ztrid(ji,2,3)  =  - zeta_s(ji,1)*zkappa_s(ji,1)  
    529                   zindterm(ji,2) = ztsold(ji,1) + zeta_s(ji,1) *            & 
     529                  zindterm(ji,2) = ztsb(ji,1) + zeta_s(ji,1) *            & 
    530530                     ( zradab_s(ji,1) +                         & 
    531                      zkappa_s(ji,0) * zg1s * t_su_b(ji) )  
     531                     zkappa_s(ji,0) * zg1s * t_su_1d(ji) )  
    532532               ENDIF 
    533533            ELSE 
     
    537537               !------------------------------------------------------------------------------| 
    538538               ! 
    539                IF (t_su_b(ji) .LT. rtt) THEN 
     539               IF (t_su_1d(ji) .LT. rtt) THEN 
    540540                  ! 
    541541                  !------------------------------------------------------------------------------| 
     
    551551                  ztrid(ji,numeqmin(ji),2)   =  dzf(ji) - zkappa_i(ji,0)*zg1     
    552552                  ztrid(ji,numeqmin(ji),3)   =  zkappa_i(ji,0)*zg1 
    553                   zindterm(ji,numeqmin(ji))  =  dzf(ji)*t_su_b(ji) - zf(ji) 
     553                  zindterm(ji,numeqmin(ji))  =  dzf(ji)*t_su_1d(ji) - zf(ji) 
    554554 
    555555                  !!first layer of ice equation 
     
    558558                     + zkappa_i(ji,0) * zg1 ) 
    559559                  ztrid(ji,numeqmin(ji)+1,3) =  - zeta_i(ji,1)*zkappa_i(ji,1)   
    560                   zindterm(ji,numeqmin(ji)+1)=  ztiold(ji,1) + zeta_i(ji,1)*zradab_i(ji,1)   
     560                  zindterm(ji,numeqmin(ji)+1)=  ztib(ji,1) + zeta_i(ji,1)*zradab_i(ji,1)   
    561561 
    562562                  !!case of only one layer in the ice (surface & ice equations are altered) 
     
    571571                     ztrid(ji,numeqmin(ji)+1,3)  =  0.0 
    572572 
    573                      zindterm(ji,numeqmin(ji)+1) =  ztiold(ji,1) + zeta_i(ji,1)* & 
    574                         ( zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_b(ji) ) 
     573                     zindterm(ji,numeqmin(ji)+1) =  ztib(ji,1) + zeta_i(ji,1)* & 
     574                        ( zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_1d(ji) ) 
    575575                  ENDIF 
    576576 
     
    591591                     zg1)   
    592592                  ztrid(ji,numeqmin(ji),3)      =  - zeta_i(ji,1) * zkappa_i(ji,1) 
    593                   zindterm(ji,numeqmin(ji))     =  ztiold(ji,1) + zeta_i(ji,1)*( zradab_i(ji,1) + & 
    594                      zkappa_i(ji,0) * zg1 * t_su_b(ji) )  
     593                  zindterm(ji,numeqmin(ji))     =  ztib(ji,1) + zeta_i(ji,1)*( zradab_i(ji,1) + & 
     594                     zkappa_i(ji,0) * zg1 * t_su_1d(ji) )  
    595595 
    596596                  !!case of only one layer in the ice (surface & ice equations are altered) 
     
    600600                        zkappa_i(ji,1)) 
    601601                     ztrid(ji,numeqmin(ji),3)  =  0.0 
    602                      zindterm(ji,numeqmin(ji)) =  ztiold(ji,1) + zeta_i(ji,1)* & 
    603                         (zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_b(ji)) & 
    604                         + t_su_b(ji)*zeta_i(ji,1)*zkappa_i(ji,0)*2.0 
     602                     zindterm(ji,numeqmin(ji)) =  ztib(ji,1) + zeta_i(ji,1)* & 
     603                        (zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_1d(ji)) & 
     604                        + t_su_1d(ji)*zeta_i(ji,1)*zkappa_i(ji,0)*2.0 
    605605                  ENDIF 
    606606 
     
    642642         DO ji = kideb , kiut 
    643643            ! ice temperatures 
    644             t_i_b(ji,nlay_i)    =  zindtbis(ji,numeqmax(ji))/zdiagbis(ji,numeqmax(ji)) 
     644            t_i_1d(ji,nlay_i)    =  zindtbis(ji,numeqmax(ji))/zdiagbis(ji,numeqmax(ji)) 
    645645         END DO 
    646646 
     
    648648            DO ji = kideb , kiut 
    649649               jk    =  numeq - nlay_s - 1 
    650                t_i_b(ji,jk)  =  (zindtbis(ji,numeq) - ztrid(ji,numeq,3)* & 
    651                   t_i_b(ji,jk+1))/zdiagbis(ji,numeq) 
     650               t_i_1d(ji,jk)  =  (zindtbis(ji,numeq) - ztrid(ji,numeq,3)* & 
     651                  t_i_1d(ji,jk+1))/zdiagbis(ji,numeq) 
    652652            END DO 
    653653         END DO 
     
    655655         DO ji = kideb , kiut 
    656656            ! snow temperatures       
    657             IF (ht_s_b(ji).GT.0._wp) & 
    658                t_s_b(ji,nlay_s)     =  (zindtbis(ji,nlay_s+1) - ztrid(ji,nlay_s+1,3) & 
    659                *  t_i_b(ji,1))/zdiagbis(ji,nlay_s+1) & 
    660                *        MAX(0.0,SIGN(1.0,ht_s_b(ji)))  
     657            IF (ht_s_1d(ji).GT.0._wp) & 
     658               t_s_1d(ji,nlay_s)     =  (zindtbis(ji,nlay_s+1) - ztrid(ji,nlay_s+1,3) & 
     659               *  t_i_1d(ji,1))/zdiagbis(ji,nlay_s+1) & 
     660               *        MAX(0.0,SIGN(1.0,ht_s_1d(ji)))  
    661661 
    662662            ! surface temperature 
    663             isnow(ji)     = NINT(  1.0 - MAX( 0.0 , SIGN( 1.0 , -ht_s_b(ji) )  )  ) 
    664             ztsuoldit(ji) = t_su_b(ji) 
    665             IF( t_su_b(ji) < ztfs(ji) ) & 
    666                t_su_b(ji) = ( zindtbis(ji,numeqmin(ji)) - ztrid(ji,numeqmin(ji),3)* ( REAL( isnow(ji) )*t_s_b(ji,1)   & 
    667                &          + REAL( 1 - isnow(ji) )*t_i_b(ji,1) ) ) / zdiagbis(ji,numeqmin(ji))   
     663            isnow(ji)     = NINT(  1.0 - MAX( 0.0 , SIGN( 1.0 , -ht_s_1d(ji) )  )  ) 
     664            ztsubit(ji) = t_su_1d(ji) 
     665            IF( t_su_1d(ji) < ztfs(ji) ) & 
     666               t_su_1d(ji) = ( zindtbis(ji,numeqmin(ji)) - ztrid(ji,numeqmin(ji),3)* ( REAL( isnow(ji) )*t_s_1d(ji,1)   & 
     667               &          + REAL( 1 - isnow(ji) )*t_i_1d(ji,1) ) ) / zdiagbis(ji,numeqmin(ji))   
    668668         END DO 
    669669         ! 
     
    675675         ! zerrit(ji) is a measure of error, it has to be under maxer_i_thd 
    676676         DO ji = kideb , kiut 
    677             t_su_b(ji) =  MAX(  MIN( t_su_b(ji) , ztfs(ji) ) , 190._wp  ) 
    678             zerrit(ji) =  ABS( t_su_b(ji) - ztsuoldit(ji) )      
     677            t_su_1d(ji) =  MAX(  MIN( t_su_1d(ji) , ztfs(ji) ) , 190._wp  ) 
     678            zerrit(ji) =  ABS( t_su_1d(ji) - ztsubit(ji) )      
    679679         END DO 
    680680 
    681681         DO jk  =  1, nlay_s 
    682682            DO ji = kideb , kiut 
    683                t_s_b(ji,jk) = MAX(  MIN( t_s_b(ji,jk), rtt ), 190._wp  ) 
    684                zerrit(ji)      = MAX(zerrit(ji),ABS(t_s_b(ji,jk) - ztstemp(ji,jk))) 
     683               t_s_1d(ji,jk) = MAX(  MIN( t_s_1d(ji,jk), rtt ), 190._wp  ) 
     684               zerrit(ji)      = MAX(zerrit(ji),ABS(t_s_1d(ji,jk) - ztstemp(ji,jk))) 
    685685            END DO 
    686686         END DO 
     
    688688         DO jk  =  1, nlay_i 
    689689            DO ji = kideb , kiut 
    690                ztmelt_i        = -tmut * s_i_b(ji,jk) + rtt  
    691                t_i_b(ji,jk) =  MAX(MIN(t_i_b(ji,jk),ztmelt_i), 190._wp) 
    692                zerrit(ji)      =  MAX(zerrit(ji),ABS(t_i_b(ji,jk) - ztitemp(ji,jk))) 
     690               ztmelt_i        = -tmut * s_i_1d(ji,jk) + rtt  
     691               t_i_1d(ji,jk) =  MAX(MIN(t_i_1d(ji,jk),ztmelt_i), 190._wp) 
     692               zerrit(ji)      =  MAX(zerrit(ji),ABS(t_i_1d(ji,jk) - ztitemp(ji,jk))) 
    693693            END DO 
    694694         END DO 
     
    715715      DO ji = kideb, kiut 
    716716         ! forced mode only : update of latent heat fluxes (sublimation) (always >=0, upward flux)  
    717          IF( .NOT. lk_cpl) qla_ice_1d (ji) = MAX( 0._wp, qla_ice_1d (ji) + dqla_ice_1d(ji) * ( t_su_b(ji) - ztsuold(ji) ) ) 
     717         IF( .NOT. lk_cpl) qla_ice_1d (ji) = MAX( 0._wp, qla_ice_1d (ji) + dqla_ice_1d(ji) * ( t_su_1d(ji) - ztsub(ji) ) ) 
    718718         !                                ! surface ice conduction flux 
    719          isnow(ji)       = NINT(  1._wp - MAX( 0._wp, SIGN( 1._wp, -ht_s_b(ji) ) )  ) 
    720          fc_su(ji)       =  -     REAL( isnow(ji) ) * zkappa_s(ji,0) * zg1s * (t_s_b(ji,1) - t_su_b(ji))   & 
    721             &               - REAL( 1 - isnow(ji) ) * zkappa_i(ji,0) * zg1  * (t_i_b(ji,1) - t_su_b(ji)) 
     719         isnow(ji)       = NINT(  1._wp - MAX( 0._wp, SIGN( 1._wp, -ht_s_1d(ji) ) )  ) 
     720         fc_su(ji)       =  -     REAL( isnow(ji) ) * zkappa_s(ji,0) * zg1s * (t_s_1d(ji,1) - t_su_1d(ji))   & 
     721            &               - REAL( 1 - isnow(ji) ) * zkappa_i(ji,0) * zg1  * (t_i_1d(ji,1) - t_su_1d(ji)) 
    722722         !                                ! bottom ice conduction flux 
    723          fc_bo_i(ji)     =  - zkappa_i(ji,nlay_i) * ( zg1*(t_bo_b(ji) - t_i_b(ji,nlay_i)) ) 
     723         fc_bo_i(ji)     =  - zkappa_i(ji,nlay_i) * ( zg1*(t_bo_1d(ji) - t_i_1d(ji,nlay_i)) ) 
    724724      END DO 
    725725 
     
    728728      !----------------------------------------- 
    729729      DO ji = kideb, kiut 
    730          IF( t_su_b(ji) < rtt ) THEN  ! case T_su < 0degC 
     730         IF( t_su_1d(ji) < rtt ) THEN  ! case T_su < 0degC 
    731731            hfx_dif_1d(ji) = hfx_dif_1d(ji)  +   & 
    732                &            ( qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_b(ji) 
     732               &            ( qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_1d(ji) 
    733733         ELSE                         ! case T_su = 0degC 
    734734            hfx_dif_1d(ji) = hfx_dif_1d(ji) +    & 
    735                &             ( fc_su(ji) + i0(ji) * qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_b(ji) 
     735               &             ( fc_su(ji) + i0(ji) * qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_1d(ji) 
    736736         ENDIF 
    737737      END DO 
     
    742742      ! --- diag error on heat diffusion - PART 2 --- ! 
    743743      DO ji = kideb, kiut 
    744          zdq(ji)        = - zq_ini(ji) + ( SUM( q_i_b(ji,1:nlay_i) ) * ht_i_b(ji) / REAL( nlay_i ) +  & 
    745             &                              SUM( q_s_b(ji,1:nlay_s) ) * ht_s_b(ji) / REAL( nlay_s ) ) 
     744         zdq(ji)        = - zq_ini(ji) + ( SUM( q_i_1d(ji,1:nlay_i) ) * ht_i_1d(ji) / REAL( nlay_i ) +  & 
     745            &                              SUM( q_s_1d(ji,1:nlay_s) ) * ht_s_1d(ji) / REAL( nlay_s ) ) 
    746746         zhfx_err    = ( fc_su(ji) + i0(ji) * qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq(ji) * r1_rdtice )  
    747          hfx_err_1d(ji) = hfx_err_1d(ji) + zhfx_err * a_i_b(ji) 
     747         hfx_err_1d(ji) = hfx_err_1d(ji) + zhfx_err * a_i_1d(ji) 
    748748         ! --- correction of qns_ice and surface conduction flux --- ! 
    749749         qns_ice_1d(ji) = qns_ice_1d(ji) - zhfx_err  
     
    751751         ! --- Heat flux at the ice surface in W.m-2 --- ! 
    752752         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
    753          hfx_in (ii,ij) = hfx_in (ii,ij) + a_i_b(ji) * ( qsr_ice_1d(ji) + qns_ice_1d(ji) ) 
     753         hfx_in (ii,ij) = hfx_in (ii,ij) + a_i_1d(ji) * ( qsr_ice_1d(ji) + qns_ice_1d(ji) ) 
    754754      END DO 
    755755    
    756756      ! 
    757757      CALL wrk_dealloc( jpij, numeqmin, numeqmax, isnow ) 
    758       CALL wrk_dealloc( jpij, ztfs, ztsuold, ztsuoldit, zh_i, zh_s, zfsw ) 
     758      CALL wrk_dealloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    759759      CALL wrk_dealloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zhsu ) 
    760760      CALL wrk_dealloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i,   & 
    761          &              ztiold, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 ) 
    762       CALL wrk_dealloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsold, zeta_s, ztstemp, z_s, kjstart = 0 ) 
     761         &              ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 ) 
     762      CALL wrk_dealloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart = 0 ) 
    763763      CALL wrk_dealloc( jpij, jkmax+2, zindterm, zindtbis, zdiagbis ) 
    764764      CALL wrk_dealloc( jpij, jkmax+2, 3, ztrid ) 
     
    783783      DO jk = 1, nlay_i             ! Sea ice energy of melting 
    784784         DO ji = kideb, kiut 
    785             ztmelts      = - tmut  * s_i_b(ji,jk) + rtt  
    786             zindb        = MAX( 0._wp , SIGN( 1._wp , -(t_i_b(ji,jk) - rtt) - epsi10 ) ) 
    787             q_i_b(ji,jk) = rhoic * ( cpic * ( ztmelts - t_i_b(ji,jk) )                                             & 
    788                &                   + lfus * ( 1.0 - zindb * ( ztmelts-rtt ) / MIN( t_i_b(ji,jk)-rtt, -epsi10 ) )   & 
     785            ztmelts      = - tmut  * s_i_1d(ji,jk) + rtt  
     786            zindb        = MAX( 0._wp , SIGN( 1._wp , -(t_i_1d(ji,jk) - rtt) - epsi10 ) ) 
     787            q_i_1d(ji,jk) = rhoic * ( cpic * ( ztmelts - t_i_1d(ji,jk) )                                             & 
     788               &                   + lfus * ( 1.0 - zindb * ( ztmelts-rtt ) / MIN( t_i_1d(ji,jk)-rtt, -epsi10 ) )   & 
    789789               &                   - rcp  *                 ( ztmelts-rtt )  )  
    790790         END DO 
     
    792792      DO jk = 1, nlay_s             ! Snow energy of melting 
    793793         DO ji = kideb, kiut 
    794             q_s_b(ji,jk) = rhosn * ( cpic * ( rtt - t_s_b(ji,jk) ) + lfus ) 
     794            q_s_1d(ji,jk) = rhosn * ( cpic * ( rtt - t_s_1d(ji,jk) ) + lfus ) 
    795795         END DO 
    796796      END DO 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90

    r4688 r4872  
    146146      ! then we should not (* a_i) again but not important since this is just to check that remap error is ~0 
    147147      DO ji = kideb, kiut 
    148          hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_b(ji) * r1_rdtice *  & 
     148         hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_1d(ji) * r1_rdtice *  & 
    149149            &               ( SUM( qnew(ji,1:nlay_i) ) * zhnew(ji) - SUM( qh_i_old(ji,0:nlay_i+1) ) )  
    150150      END DO 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r4870 r4872  
    7272      !!             - Computation of variation of ice volume and mass 
    7373      !!             - Computation of frldb after lateral accretion and  
    74       !!               update ht_s_b, ht_i_b and tbif_1d(:,:)       
     74      !!               update ht_s_1d, ht_i_1d and tbif_1d(:,:)       
    7575      !!------------------------------------------------------------------------ 
    7676      INTEGER ::   ji,jj,jk,jl      ! dummy loop indices 
     
    9090      REAL(wp) ::   zv_newfra 
    9191   
    92       INTEGER , POINTER, DIMENSION(:) ::   jcat      ! indexes of categories where new ice grows 
     92      INTEGER , POINTER, DIMENSION(:) ::   jcat        ! indexes of categories where new ice grows 
    9393      REAL(wp), POINTER, DIMENSION(:) ::   zswinew     ! switch for new ice or not 
    9494 
     
    102102      REAL(wp), POINTER, DIMENSION(:) ::   zda_res     ! residual area in case of excessive heat budget 
    103103      REAL(wp), POINTER, DIMENSION(:) ::   zat_i_1d    ! total ice fraction     
    104       REAL(wp), POINTER, DIMENSION(:) ::   zv_frazb   ! accretion of frazil ice at the ice bottom 
     104      REAL(wp), POINTER, DIMENSION(:) ::   zv_frazb    ! accretion of frazil ice at the ice bottom 
    105105      REAL(wp), POINTER, DIMENSION(:) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector) 
    106106 
    107       REAL(wp), POINTER, DIMENSION(:,:) ::   zv_old      ! old volume of ice in category jl 
    108       REAL(wp), POINTER, DIMENSION(:,:) ::   za_old      ! old area of ice in category jl 
    109       REAL(wp), POINTER, DIMENSION(:,:) ::   za_i_1d     ! 1-D version of a_i 
    110       REAL(wp), POINTER, DIMENSION(:,:) ::   zv_i_1d     ! 1-D version of v_i 
    111       REAL(wp), POINTER, DIMENSION(:,:) ::   zoa_i_1d    ! 1-D version of oa_i 
    112       REAL(wp), POINTER, DIMENSION(:,:) ::   zsmv_i_1d   ! 1-D version of smv_i 
    113  
    114       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze_i_1d   !: 1-D version of e_i 
     107      REAL(wp), POINTER, DIMENSION(:,:) ::   zv_b      ! old volume of ice in category jl 
     108      REAL(wp), POINTER, DIMENSION(:,:) ::   za_b      ! old area of ice in category jl 
     109      REAL(wp), POINTER, DIMENSION(:,:) ::   za_i_1d   ! 1-D version of a_i 
     110      REAL(wp), POINTER, DIMENSION(:,:) ::   zv_i_1d   ! 1-D version of v_i 
     111      REAL(wp), POINTER, DIMENSION(:,:) ::   zoa_i_1d  ! 1-D version of oa_i 
     112      REAL(wp), POINTER, DIMENSION(:,:) ::   zsmv_i_1d ! 1-D version of smv_i 
     113 
     114      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze_i_1d !: 1-D version of e_i 
    115115 
    116116      REAL(wp), POINTER, DIMENSION(:,:) ::   zvrel                   ! relative ice / frazil velocity 
     
    120120      CALL wrk_alloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice ) 
    121121      CALL wrk_alloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d ) 
    122       CALL wrk_alloc( jpij,jpl, zv_old, za_old, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
     122      CALL wrk_alloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
    123123      CALL wrk_alloc( jpij,jkmax,jpl, ze_i_1d ) 
    124124      CALL wrk_alloc( jpi,jpj, zvrel ) 
     
    302302 
    303303         CALL tab_2d_1d( nbpac, qlead_1d  (1:nbpac)     , qlead  , jpi, jpj, npac(1:nbpac) ) 
    304          CALL tab_2d_1d( nbpac, t_bo_b    (1:nbpac)     , t_bo   , jpi, jpj, npac(1:nbpac) ) 
     304         CALL tab_2d_1d( nbpac, t_bo_1d   (1:nbpac)     , t_bo   , jpi, jpj, npac(1:nbpac) ) 
    305305         CALL tab_2d_1d( nbpac, sfx_opw_1d(1:nbpac)     , sfx_opw, jpi, jpj, npac(1:nbpac) ) 
    306306         CALL tab_2d_1d( nbpac, wfx_opw_1d(1:nbpac)     , wfx_opw, jpi, jpj, npac(1:nbpac) ) 
    307          CALL tab_2d_1d( nbpac, hicol_b   (1:nbpac)     , hicol  , jpi, jpj, npac(1:nbpac) ) 
     307         CALL tab_2d_1d( nbpac, hicol_1d  (1:nbpac)     , hicol  , jpi, jpj, npac(1:nbpac) ) 
    308308         CALL tab_2d_1d( nbpac, zvrel_1d  (1:nbpac)     , zvrel  , jpi, jpj, npac(1:nbpac) ) 
    309309 
     
    318318         ! Keep old ice areas and volume in memory 
    319319         !----------------------------------------- 
    320          zv_old(1:nbpac,:) = zv_i_1d(1:nbpac,:)  
    321          za_old(1:nbpac,:) = za_i_1d(1:nbpac,:) 
     320         zv_b(1:nbpac,:) = zv_i_1d(1:nbpac,:)  
     321         za_b(1:nbpac,:) = za_i_1d(1:nbpac,:) 
    322322         !---------------------- 
    323323         ! Thickness of new ice 
     
    326326            zh_newice(ji) = hiccrit 
    327327         END DO 
    328          IF( fraz_swi == 1 ) zh_newice(1:nbpac) = hicol_b(1:nbpac) 
     328         IF( fraz_swi == 1 ) zh_newice(1:nbpac) = hicol_1d(1:nbpac) 
    329329 
    330330         !---------------------- 
     
    350350         DO ji = 1, nbpac 
    351351            ztmelts       = - tmut * zs_newice(ji) + rtt                  ! Melting point (K) 
    352             ze_newice(ji) =   rhoic * (  cpic * ( ztmelts - t_bo_b(ji) )                             & 
    353                &                       + lfus * ( 1.0 - ( ztmelts - rtt ) / MIN( t_bo_b(ji) - rtt, -epsi10 ) )   & 
     352            ze_newice(ji) =   rhoic * (  cpic * ( ztmelts - t_bo_1d(ji) )                             & 
     353               &                       + lfus * ( 1.0 - ( ztmelts - rtt ) / MIN( t_bo_1d(ji) - rtt, -epsi10 ) )   & 
    354354               &                       - rcp  *         ( ztmelts - rtt )  ) 
    355355         END DO ! ji 
     
    369369            zEi           = - ze_newice(ji) / rhoic                ! specific enthalpy of forming ice [J/kg] 
    370370 
    371             zEw           = rcp * ( t_bo_b(ji) - rt0 )             ! specific enthalpy of seawater at t_bo_b [J/kg] 
     371            zEw           = rcp * ( t_bo_1d(ji) - rt0 )             ! specific enthalpy of seawater at t_bo_1d [J/kg] 
    372372                                                                   ! clem: we suppose we are already at the freezing point (condition qlead<0 is satisfyied)  
    373373                                                                    
     
    440440         DO ji = 1, nbpac 
    441441            jl = jcat(ji)                                                    ! categroy in which new ice is put 
    442             zswinew  (ji) = MAX( 0._wp , SIGN( 1._wp , - za_old(ji,jl) ) )   ! 0 if old ice 
     442            zswinew  (ji) = MAX( 0._wp , SIGN( 1._wp , - za_b(ji,jl) ) )   ! 0 if old ice 
    443443         END DO 
    444444 
     
    448448               zinda = MAX( 0._wp, SIGN( 1._wp , zv_i_1d(ji,jl) - epsi20 ) ) 
    449449               ze_i_1d(ji,jk,jl) = zswinew(ji)   *   ze_newice(ji) +                                                      & 
    450                   &        ( 1.0 - zswinew(ji) ) * ( ze_newice(ji) * zv_newice(ji) + ze_i_1d(ji,jk,jl) * zv_old(ji,jl) )  & 
     450                  &        ( 1.0 - zswinew(ji) ) * ( ze_newice(ji) * zv_newice(ji) + ze_i_1d(ji,jk,jl) * zv_b(ji,jl) )  & 
    451451                  &        * zinda / MAX( zv_i_1d(ji,jl), epsi20 ) 
    452452            END DO 
     
    489489            DO ji = 1, nbpac 
    490490               zindb = 1._wp - MAX( 0._wp , SIGN( 1._wp , - za_i_1d(ji,jl) + epsi20 ) )  ! 0 if no ice and 1 if yes 
    491                zoa_i_1d(ji,jl)  = za_old(ji,jl) * zoa_i_1d(ji,jl) / MAX( za_i_1d(ji,jl) , epsi20 ) * zindb    
     491               zoa_i_1d(ji,jl)  = za_b(ji,jl) * zoa_i_1d(ji,jl) / MAX( za_i_1d(ji,jl) , epsi20 ) * zindb    
    492492            END DO  
    493493         END DO    
     
    498498         DO jl = 1, jpl 
    499499            DO ji = 1, nbpac 
    500                zdv   = zv_i_1d(ji,jl) - zv_old(ji,jl) 
     500               zdv   = zv_i_1d(ji,jl) - zv_b(ji,jl) 
    501501               zsmv_i_1d(ji,jl) = zsmv_i_1d(ji,jl) + zdv * zs_newice(ji) 
    502502            END DO 
     
    541541      CALL wrk_dealloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice ) 
    542542      CALL wrk_dealloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d ) 
    543       CALL wrk_dealloc( jpij,jpl, zv_old, za_old, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
     543      CALL wrk_dealloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
    544544      CALL wrk_dealloc( jpij,jkmax,jpl, ze_i_1d ) 
    545545      CALL wrk_dealloc( jpi,jpj, zvrel ) 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90

    r4688 r4872  
    6060      !--------------------------------------------------------- 
    6161      DO ji = kideb, kiut 
    62          sm_i_b(ji) = sm_i_b(ji) + dsm_i_se_1d(ji) + dsm_i_si_1d(ji) 
     62         sm_i_1d(ji) = sm_i_1d(ji) + dsm_i_se_1d(ji) + dsm_i_si_1d(ji) 
    6363      END DO 
    6464  
     
    6666      ! 1) Constant salinity, constant in time                                       | 
    6767      !------------------------------------------------------------------------------| 
    68 !!gm comment: if num_sal = 1 s_i_new, s_i_b and sm_i_b can be set to bulk_sal one for all in the initialisation phase !! 
     68!!gm comment: if num_sal = 1 s_i_new, s_i_1d and sm_i_1d can be set to bulk_sal one for all in the initialisation phase !! 
    6969!!gm           ===>>>   simplification of almost all test on num_sal value 
    7070      IF(  num_sal == 1  ) THEN 
    71             s_i_b (kideb:kiut,1:nlay_i) =  bulk_sal 
    72             sm_i_b (kideb:kiut)          =  bulk_sal  
     71            s_i_1d (kideb:kiut,1:nlay_i) =  bulk_sal 
     72            sm_i_1d(kideb:kiut)          =  bulk_sal  
    7373            s_i_new(kideb:kiut)          =  bulk_sal 
    7474      ENDIF 
     
    8383            ! Switches  
    8484            !---------- 
    85             iflush  = MAX( 0._wp , SIGN( 1._wp , t_su_b(ji) - rtt )        )    ! =1 if summer  
    86             igravdr = MAX( 0._wp , SIGN( 1._wp , t_bo_b(ji) - t_su_b(ji) ) )    ! =1 if t_su < t_bo 
     85            iflush  = MAX( 0._wp , SIGN( 1._wp , t_su_1d(ji) - rtt )        )     ! =1 if summer  
     86            igravdr = MAX( 0._wp , SIGN( 1._wp , t_bo_1d(ji) - t_su_1d(ji) ) )    ! =1 if t_su < t_bo 
    8787 
    8888            !--------------------- 
     
    9090            !--------------------- 
    9191            ! drainage by gravity drainage 
    92             dsm_i_gd_1d(ji) = - igravdr * MAX( sm_i_b(ji) - sal_G , 0._wp ) / time_G * rdt_ice  
     92            dsm_i_gd_1d(ji) = - igravdr * MAX( sm_i_1d(ji) - sal_G , 0._wp ) / time_G * rdt_ice  
    9393            ! drainage by flushing   
    94             dsm_i_fl_1d(ji) = - iflush  * MAX( sm_i_b(ji) - sal_F , 0._wp ) / time_F * rdt_ice 
     94            dsm_i_fl_1d(ji) = - iflush  * MAX( sm_i_1d(ji) - sal_F , 0._wp ) / time_F * rdt_ice 
    9595 
    9696            !----------------- 
     
    9999            ! only drainage terms ( gravity drainage and flushing ) 
    100100            ! snow ice / bottom sources are added in lim_thd_ent to conserve energy 
    101             sm_i_b(ji) = sm_i_b(ji) + dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) 
     101            sm_i_1d(ji) = sm_i_1d(ji) + dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) 
    102102 
    103103            !---------------------------- 
    104104            ! Salt flux - brine drainage 
    105105            !---------------------------- 
    106             sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_b(ji) * ht_i_b(ji) * ( dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) ) * r1_rdtice 
     106            sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_1d(ji) * ht_i_1d(ji) * ( dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) ) * r1_rdtice 
    107107 
    108108         END DO 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limupdate1.F90

    r4869 r4872  
    150150      ! Diagnostics 
    151151      ! ------------------------------------------------- 
    152       d_u_ice_dyn(:,:)     = u_ice(:,:)     - old_u_ice(:,:) 
    153       d_v_ice_dyn(:,:)     = v_ice(:,:)     - old_v_ice(:,:) 
    154       d_a_i_trp  (:,:,:)   = a_i  (:,:,:)   - old_a_i  (:,:,:) 
    155       d_v_s_trp  (:,:,:)   = v_s  (:,:,:)   - old_v_s  (:,:,:)   
    156       d_v_i_trp  (:,:,:)   = v_i  (:,:,:)   - old_v_i  (:,:,:)    
    157       d_e_s_trp  (:,:,:,:) = e_s  (:,:,:,:) - old_e_s  (:,:,:,:)   
    158       d_e_i_trp  (:,:,1:nlay_i,:) = e_i  (:,:,1:nlay_i,:) - old_e_i(:,:,1:nlay_i,:) 
    159       d_oa_i_trp (:,:,:)   = oa_i (:,:,:)   - old_oa_i (:,:,:) 
     152      d_u_ice_dyn(:,:)     = u_ice(:,:)     - u_ice_b(:,:) 
     153      d_v_ice_dyn(:,:)     = v_ice(:,:)     - v_ice_b(:,:) 
     154      d_a_i_trp  (:,:,:)   = a_i  (:,:,:)   - a_i_b  (:,:,:) 
     155      d_v_s_trp  (:,:,:)   = v_s  (:,:,:)   - v_s_b  (:,:,:)   
     156      d_v_i_trp  (:,:,:)   = v_i  (:,:,:)   - v_i_b  (:,:,:)    
     157      d_e_s_trp  (:,:,:,:) = e_s  (:,:,:,:) - e_s_b  (:,:,:,:)   
     158      d_e_i_trp  (:,:,1:nlay_i,:) = e_i  (:,:,1:nlay_i,:) - e_i_b(:,:,1:nlay_i,:) 
     159      d_oa_i_trp (:,:,:)   = oa_i (:,:,:)   - oa_i_b (:,:,:) 
    160160      d_smv_i_trp(:,:,:)   = 0._wp 
    161       IF(  num_sal == 2  ) d_smv_i_trp(:,:,:) = smv_i(:,:,:) - old_smv_i(:,:,:) 
     161      IF(  num_sal == 2  ) d_smv_i_trp(:,:,:) = smv_i(:,:,:) - smv_i_b(:,:,:) 
    162162 
    163163      ! conservation test 
     
    175175         CALL prt_ctl(tab2d_1=u_ice      , clinfo1=' lim_update1  : u_ice       :', tab2d_2=v_ice      , clinfo2=' v_ice       :') 
    176176         CALL prt_ctl(tab2d_1=d_u_ice_dyn, clinfo1=' lim_update1  : d_u_ice_dyn :', tab2d_2=d_v_ice_dyn, clinfo2=' d_v_ice_dyn :') 
    177          CALL prt_ctl(tab2d_1=old_u_ice  , clinfo1=' lim_update1  : old_u_ice   :', tab2d_2=old_v_ice  , clinfo2=' old_v_ice   :') 
     177         CALL prt_ctl(tab2d_1=u_ice_b    , clinfo1=' lim_update1  : u_ice_b     :', tab2d_2=v_ice_b    , clinfo2=' v_ice_b     :') 
    178178 
    179179         DO jl = 1, jpl 
     
    188188            CALL prt_ctl(tab2d_1=o_i        (:,:,jl)        , clinfo1= ' lim_update1  : o_i         : ') 
    189189            CALL prt_ctl(tab2d_1=a_i        (:,:,jl)        , clinfo1= ' lim_update1  : a_i         : ') 
    190             CALL prt_ctl(tab2d_1=old_a_i    (:,:,jl)        , clinfo1= ' lim_update1  : old_a_i     : ') 
     190            CALL prt_ctl(tab2d_1=a_i_b      (:,:,jl)        , clinfo1= ' lim_update1  : a_i_b       : ') 
    191191            CALL prt_ctl(tab2d_1=d_a_i_trp  (:,:,jl)        , clinfo1= ' lim_update1  : d_a_i_trp   : ') 
    192192            CALL prt_ctl(tab2d_1=v_i        (:,:,jl)        , clinfo1= ' lim_update1  : v_i         : ') 
    193             CALL prt_ctl(tab2d_1=old_v_i    (:,:,jl)        , clinfo1= ' lim_update1  : old_v_i     : ') 
     193            CALL prt_ctl(tab2d_1=v_i_b      (:,:,jl)        , clinfo1= ' lim_update1  : v_i_b       : ') 
    194194            CALL prt_ctl(tab2d_1=d_v_i_trp  (:,:,jl)        , clinfo1= ' lim_update1  : d_v_i_trp   : ') 
    195195            CALL prt_ctl(tab2d_1=v_s        (:,:,jl)        , clinfo1= ' lim_update1  : v_s         : ') 
    196             CALL prt_ctl(tab2d_1=old_v_s    (:,:,jl)        , clinfo1= ' lim_update1  : old_v_s     : ') 
     196            CALL prt_ctl(tab2d_1=v_s_b      (:,:,jl)        , clinfo1= ' lim_update1  : v_s_b       : ') 
    197197            CALL prt_ctl(tab2d_1=d_v_s_trp  (:,:,jl)        , clinfo1= ' lim_update1  : d_v_s_trp   : ') 
    198198            CALL prt_ctl(tab2d_1=e_i        (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : e_i1        : ') 
    199             CALL prt_ctl(tab2d_1=old_e_i    (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : old_e_i1    : ') 
     199            CALL prt_ctl(tab2d_1=e_i_b      (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : e_i1_b      : ') 
    200200            CALL prt_ctl(tab2d_1=d_e_i_trp  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : de_i1_trp   : ') 
    201201            CALL prt_ctl(tab2d_1=e_i        (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : e_i2        : ') 
    202             CALL prt_ctl(tab2d_1=old_e_i    (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : old_e_i2    : ') 
     202            CALL prt_ctl(tab2d_1=e_i_b      (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : e_i2_b      : ') 
    203203            CALL prt_ctl(tab2d_1=d_e_i_trp  (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : de_i2_trp   : ') 
    204204            CALL prt_ctl(tab2d_1=e_s        (:,:,1,jl)      , clinfo1= ' lim_update1  : e_snow      : ') 
    205             CALL prt_ctl(tab2d_1=old_e_s    (:,:,1,jl)      , clinfo1= ' lim_update1  : old_e_snow  : ') 
     205            CALL prt_ctl(tab2d_1=e_s_b      (:,:,1,jl)      , clinfo1= ' lim_update1  : e_snow_b    : ') 
    206206            CALL prt_ctl(tab2d_1=d_e_s_trp  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : d_e_s_trp   : ') 
    207207            CALL prt_ctl(tab2d_1=smv_i      (:,:,jl)        , clinfo1= ' lim_update1  : smv_i       : ') 
    208             CALL prt_ctl(tab2d_1=old_smv_i  (:,:,jl)        , clinfo1= ' lim_update1  : old_smv_i   : ') 
     208            CALL prt_ctl(tab2d_1=smv_i_b    (:,:,jl)        , clinfo1= ' lim_update1  : smv_i_b     : ') 
    209209            CALL prt_ctl(tab2d_1=d_smv_i_trp(:,:,jl)        , clinfo1= ' lim_update1  : d_smv_i_trp : ') 
    210210            CALL prt_ctl(tab2d_1=oa_i       (:,:,jl)        , clinfo1= ' lim_update1  : oa_i        : ') 
    211             CALL prt_ctl(tab2d_1=old_oa_i   (:,:,jl)        , clinfo1= ' lim_update1  : old_oa_i    : ') 
     211            CALL prt_ctl(tab2d_1=oa_i_b     (:,:,jl)        , clinfo1= ' lim_update1  : oa_i_b      : ') 
    212212            CALL prt_ctl(tab2d_1=d_oa_i_trp (:,:,jl)        , clinfo1= ' lim_update1  : d_oa_i_trp  : ') 
    213213 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90

    r4869 r4872  
    182182      ! Diagnostics 
    183183      ! ------------------------------------------------- 
    184       d_a_i_thd(:,:,:)   = a_i(:,:,:)   - old_a_i(:,:,:)  
    185       d_v_s_thd(:,:,:)   = v_s(:,:,:)   - old_v_s(:,:,:) 
    186       d_v_i_thd(:,:,:)   = v_i(:,:,:)   - old_v_i(:,:,:)   
    187       d_e_s_thd(:,:,:,:) = e_s(:,:,:,:) - old_e_s(:,:,:,:)  
    188       d_e_i_thd(:,:,1:nlay_i,:) = e_i(:,:,1:nlay_i,:) - old_e_i(:,:,1:nlay_i,:) 
    189       !?? d_oa_i_thd(:,:,:)  = oa_i (:,:,:) - old_oa_i (:,:,:) 
     184      d_a_i_thd(:,:,:)   = a_i(:,:,:)   - a_i_b(:,:,:)  
     185      d_v_s_thd(:,:,:)   = v_s(:,:,:)   - v_s_b(:,:,:) 
     186      d_v_i_thd(:,:,:)   = v_i(:,:,:)   - v_i_b(:,:,:)   
     187      d_e_s_thd(:,:,:,:) = e_s(:,:,:,:) - e_s_b(:,:,:,:)  
     188      d_e_i_thd(:,:,1:nlay_i,:) = e_i(:,:,1:nlay_i,:) - e_i_b(:,:,1:nlay_i,:) 
     189      !?? d_oa_i_thd(:,:,:)  = oa_i (:,:,:) - oa_i_b (:,:,:) 
    190190      d_smv_i_thd(:,:,:) = 0._wp 
    191       IF( num_sal == 2 )   d_smv_i_thd(:,:,:) = smv_i(:,:,:) - old_smv_i(:,:,:) 
     191      IF( num_sal == 2 )   d_smv_i_thd(:,:,:) = smv_i(:,:,:) - smv_i_b(:,:,:) 
    192192      ! diag only (clem) 
    193193      dv_dt_thd(:,:,:) = d_v_i_thd(:,:,:) * r1_rdtice * rday 
     
    215215         CALL prt_ctl(tab2d_1=strength   , clinfo1=' lim_update2  : strength    :') 
    216216         CALL prt_ctl(tab2d_1=u_ice      , clinfo1=' lim_update2  : u_ice       :', tab2d_2=v_ice      , clinfo2=' v_ice       :') 
    217          CALL prt_ctl(tab2d_1=old_u_ice  , clinfo1=' lim_update2  : old_u_ice   :', tab2d_2=old_v_ice  , clinfo2=' old_v_ice   :') 
     217         CALL prt_ctl(tab2d_1=u_ice_b    , clinfo1=' lim_update2  : u_ice_b     :', tab2d_2=v_ice_b    , clinfo2=' v_ice_b     :') 
    218218 
    219219         DO jl = 1, jpl 
     
    228228            CALL prt_ctl(tab2d_1=o_i        (:,:,jl)        , clinfo1= ' lim_update2  : o_i         : ') 
    229229            CALL prt_ctl(tab2d_1=a_i        (:,:,jl)        , clinfo1= ' lim_update2  : a_i         : ') 
    230             CALL prt_ctl(tab2d_1=old_a_i    (:,:,jl)        , clinfo1= ' lim_update2  : old_a_i     : ') 
     230            CALL prt_ctl(tab2d_1=a_i_b      (:,:,jl)        , clinfo1= ' lim_update2  : a_i_b       : ') 
    231231            CALL prt_ctl(tab2d_1=d_a_i_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_a_i_thd   : ') 
    232232            CALL prt_ctl(tab2d_1=v_i        (:,:,jl)        , clinfo1= ' lim_update2  : v_i         : ') 
    233             CALL prt_ctl(tab2d_1=old_v_i    (:,:,jl)        , clinfo1= ' lim_update2  : old_v_i     : ') 
     233            CALL prt_ctl(tab2d_1=v_i_b      (:,:,jl)        , clinfo1= ' lim_update2  : v_i_b       : ') 
    234234            CALL prt_ctl(tab2d_1=d_v_i_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_v_i_thd   : ') 
    235235            CALL prt_ctl(tab2d_1=v_s        (:,:,jl)        , clinfo1= ' lim_update2  : v_s         : ') 
    236             CALL prt_ctl(tab2d_1=old_v_s    (:,:,jl)        , clinfo1= ' lim_update2  : old_v_s     : ') 
     236            CALL prt_ctl(tab2d_1=v_s_b      (:,:,jl)        , clinfo1= ' lim_update2  : v_s_b       : ') 
    237237            CALL prt_ctl(tab2d_1=d_v_s_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_v_s_thd   : ') 
    238238            CALL prt_ctl(tab2d_1=e_i        (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : e_i1        : ') 
    239             CALL prt_ctl(tab2d_1=old_e_i    (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : old_e_i1    : ') 
     239            CALL prt_ctl(tab2d_1=e_i_b      (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : e_i1_b      : ') 
    240240            CALL prt_ctl(tab2d_1=d_e_i_thd  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : de_i1_thd   : ') 
    241241            CALL prt_ctl(tab2d_1=e_i        (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : e_i2        : ') 
    242             CALL prt_ctl(tab2d_1=old_e_i    (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : old_e_i2    : ') 
     242            CALL prt_ctl(tab2d_1=e_i_b      (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : e_i2_b      : ') 
    243243            CALL prt_ctl(tab2d_1=d_e_i_thd  (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : de_i2_thd   : ') 
    244244            CALL prt_ctl(tab2d_1=e_s        (:,:,1,jl)      , clinfo1= ' lim_update2  : e_snow      : ') 
    245             CALL prt_ctl(tab2d_1=old_e_s    (:,:,1,jl)      , clinfo1= ' lim_update2  : old_e_snow  : ') 
     245            CALL prt_ctl(tab2d_1=e_s_b      (:,:,1,jl)      , clinfo1= ' lim_update2  : e_snow_b    : ') 
    246246            CALL prt_ctl(tab2d_1=d_e_s_thd  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : d_e_s_thd   : ') 
    247247            CALL prt_ctl(tab2d_1=smv_i      (:,:,jl)        , clinfo1= ' lim_update2  : smv_i       : ') 
    248             CALL prt_ctl(tab2d_1=old_smv_i  (:,:,jl)        , clinfo1= ' lim_update2  : old_smv_i   : ') 
     248            CALL prt_ctl(tab2d_1=smv_i_b    (:,:,jl)        , clinfo1= ' lim_update2  : smv_i_b     : ') 
    249249            CALL prt_ctl(tab2d_1=d_smv_i_thd(:,:,jl)        , clinfo1= ' lim_update2  : d_smv_i_thd : ') 
    250250            CALL prt_ctl(tab2d_1=oa_i       (:,:,jl)        , clinfo1= ' lim_update2  : oa_i        : ') 
    251             CALL prt_ctl(tab2d_1=old_oa_i   (:,:,jl)        , clinfo1= ' lim_update2  : old_oa_i    : ') 
     251            CALL prt_ctl(tab2d_1=oa_i_b     (:,:,jl)        , clinfo1= ' lim_update2  : oa_i_b      : ') 
    252252            CALL prt_ctl(tab2d_1=d_oa_i_thd (:,:,jl)        , clinfo1= ' lim_update2  : d_oa_i_thd  : ') 
    253253 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r4688 r4872  
    464464      ! Vertically constant, constant in time 
    465465      !--------------------------------------- 
    466       IF( num_sal == 1 )   s_i_b(:,:) = bulk_sal 
     466      IF( num_sal == 1 )   s_i_1d(:,:) = bulk_sal 
    467467 
    468468      !------------------------------------------------------ 
     
    473473         ! 
    474474         DO ji = kideb, kiut          ! Slope of the linear profile zs_zero 
    475             z_slope_s(ji) = 2._wp * sm_i_b(ji) / MAX( epsi10 , ht_i_b(ji) ) 
     475            z_slope_s(ji) = 2._wp * sm_i_1d(ji) / MAX( epsi10 , ht_i_1d(ji) ) 
    476476         END DO 
    477477 
     
    489489               ij =     ( npb(ji) - 1 ) / jpi + 1 
    490490               ! zind0 = 1 if sm_i le s_i_0 and 0 otherwise 
    491                zind0  = MAX( 0._wp , SIGN( 1._wp  , s_i_0 - sm_i_b(ji) ) )  
     491               zind0  = MAX( 0._wp , SIGN( 1._wp  , s_i_0 - sm_i_1d(ji) ) )  
    492492               ! zind01 = 1 if sm_i is between s_i_0 and s_i_1 and 0 othws  
    493                zind01 = ( 1._wp - zind0 ) * MAX( 0._wp , SIGN( 1._wp , s_i_1 - sm_i_b(ji) ) )  
     493               zind01 = ( 1._wp - zind0 ) * MAX( 0._wp , SIGN( 1._wp , s_i_1 - sm_i_1d(ji) ) )  
    494494               ! if 2.sm_i GE sss_m then zindbal = 1 
    495495               ! this is to force a constant salinity profile in the Baltic Sea 
    496                zindbal = MAX( 0._wp , SIGN( 1._wp , 2._wp * sm_i_b(ji) - sss_m(ii,ij) ) ) 
     496               zindbal = MAX( 0._wp , SIGN( 1._wp , 2._wp * sm_i_1d(ji) - sss_m(ii,ij) ) ) 
    497497               ! 
    498                zalpha = (  zind0 + zind01 * ( sm_i_b(ji) * dummy_fac0 + dummy_fac1 )  ) * ( 1.0 - zindbal ) 
     498               zalpha = (  zind0 + zind01 * ( sm_i_1d(ji) * dummy_fac0 + dummy_fac1 )  ) * ( 1.0 - zindbal ) 
    499499               ! 
    500                zs_zero = z_slope_s(ji) * ( REAL(jk,wp) - 0.5_wp ) * ht_i_b(ji) * dummy_fac2 
     500               zs_zero = z_slope_s(ji) * ( REAL(jk,wp) - 0.5_wp ) * ht_i_1d(ji) * dummy_fac2 
    501501               ! weighting the profile 
    502                s_i_b(ji,jk) = zalpha * zs_zero + ( 1._wp - zalpha ) * sm_i_b(ji) 
     502               s_i_1d(ji,jk) = zalpha * zs_zero + ( 1._wp - zalpha ) * sm_i_1d(ji) 
    503503            END DO ! ji 
    504504         END DO ! jk 
     
    512512      IF( num_sal == 3 ) THEN      ! Schwarzacher (1959) multiyear salinity profile (mean = 2.30) 
    513513         ! 
    514          sm_i_b(:) = 2.30_wp 
     514         sm_i_1d(:) = 2.30_wp 
    515515         ! 
    516516!CDIR NOVERRCHK 
     
    519519            zsal =  1.6_wp * (  1._wp - COS( rpi * zargtemp**(0.407_wp/(0.573_wp+zargtemp)) )  ) 
    520520            DO ji = kideb, kiut 
    521                s_i_b(ji,jk) = zsal 
     521               s_i_1d(ji,jk) = zsal 
    522522            END DO 
    523523         END DO 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90

    r4866 r4872  
    3434   !!----------------------------- 
    3535   !: In ice thermodynamics, to spare memory, the vectors are folded 
    36    !: from 1D to 2D vectors. The following variables, with ending _1d (or _b) 
     36   !: from 1D to 2D vectors. The following variables, with ending _1d 
    3737   !: are the variables corresponding to 2d vectors 
    3838 
     
    4040   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   npac   !: correspondance between points (lateral accretion) 
    4141 
    42    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qlead_1d      !: <==> the 2D  qlead 
    43    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ftr_ice_1d    !: <==> the 2D  ftr_ice 
    44    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qsr_ice_1d    !: <==> the 2D  qsr_ice 
    45    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr1_i0_1d     !: <==> the 2D  fr1_i0 
    46    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr2_i0_1d     !: <==> the 2D  fr2_i0 
    47    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qns_ice_1d    !: <==> the 2D  qns_ice 
    48    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_bo_b        !: <==> the 2D  t_bo 
     42   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qlead_1d      
     43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ftr_ice_1d    
     44   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qsr_ice_1d   
     45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr1_i0_1d    
     46   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr2_i0_1d    
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qns_ice_1d   
     48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_bo_1d      
    4949 
    5050   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_sum_1d 
     
    8686   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sprecip_1d    !: <==> the 2D  sprecip 
    8787   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   frld_1d       !: <==> the 2D  frld 
    88    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   at_i_b        !: <==> the 2D  at_i 
     88   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   at_i_1d        !: <==> the 2D  at_i 
    8989   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fhtur_1d      !: <==> the 2D  fhtur 
    9090   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fhld_1d       !: <==> the 2D  fhld 
     
    9999   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_se_1d   !: Ice salinity variations due to basal salt entrapment 
    100100   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_si_1d   !: Ice salinity variations due to lateral accretion     
    101    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hicol_b       !: Ice collection thickness accumulated in leads 
     101   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hicol_1d      !: Ice collection thickness accumulated in leads 
    102102 
    103    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_su_b      !: <==> the 2D  t_su 
    104    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_i_b       !: <==> the 2D  a_i 
    105    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_i_b      !: <==> the 2D  ht_s 
    106    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_s_b      !: <==> the 2D  ht_i 
    107    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_su       !: Surface Conduction flux  
    108    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_bo_i     !: Bottom  Conduction flux  
    109    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_s_tot    !: Snow accretion/ablation        [m] 
    110    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_surf   !: Ice surface accretion/ablation [m] 
    111    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_bott   !: Ice bottom accretion/ablation  [m] 
    112    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_snowice  !: Snow ice formation             [m of ice] 
    113    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sm_i_b      !: Ice bulk salinity [ppt] 
    114    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   s_i_new     !: Salinity of new ice at the bottom 
     103   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_su_1d       !: <==> the 2D  t_su 
     104   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_i_1d        !: <==> the 2D  a_i 
     105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_i_1d       !: <==> the 2D  ht_s 
     106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_s_1d       !: <==> the 2D  ht_i 
     107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_su         !: Surface Conduction flux  
     108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_bo_i       !: Bottom  Conduction flux  
     109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_s_tot      !: Snow accretion/ablation        [m] 
     110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_surf     !: Ice surface accretion/ablation [m] 
     111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_bott     !: Ice bottom accretion/ablation  [m] 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_snowice    !: Snow ice formation             [m of ice] 
     113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sm_i_1d       !: Ice bulk salinity [ppt] 
     114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   s_i_new       !: Salinity of new ice at the bottom 
    115115 
    116    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   iatte_1d   !: clem attenuation coef of the input solar flux (unitless) 
    117    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   oatte_1d   !: clem attenuation coef of the input solar flux (unitless) 
     116   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   iatte_1d   !: attenuation coef of the input solar flux (unitless) 
     117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   oatte_1d   !: attenuation coef of the input solar flux (unitless) 
    118118 
    119    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_s_b   !: corresponding to the 2D var  t_s 
    120    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_i_b   !: corresponding to the 2D var  t_i 
    121    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   s_i_b   !: profiled ice salinity 
    122    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_i_b   !:    Ice  enthalpy per unit volume 
    123    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_s_b   !:    Snow enthalpy per unit volume 
     119   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_s_1d   !: corresponding to the 2D var  t_s 
     120   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_i_1d   !: corresponding to the 2D var  t_i 
     121   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   s_i_1d   !: profiled ice salinity 
     122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_i_1d   !:    Ice  enthalpy per unit volume 
     123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_s_1d   !:    Snow enthalpy per unit volume 
    124124 
    125    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qh_i_old  !: ice heat content (q*h, J.m-2) 
    126    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   h_i_old   !: ice thickness layer (m) 
     125   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qh_i_old !: ice heat content (q*h, J.m-2) 
     126   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   h_i_old  !: ice thickness layer (m) 
    127127 
    128128   INTEGER , PUBLIC ::   jiindex_1d   ! 1D index of debugging point 
     
    148148         &      qsr_ice_1d (jpij) ,     & 
    149149         &      fr1_i0_1d(jpij) , fr2_i0_1d(jpij) , qns_ice_1d(jpij) ,     & 
    150          &      t_bo_b   (jpij) , iatte_1d  (jpij) , oatte_1d (jpij) ,     & 
     150         &      t_bo_1d   (jpij) , iatte_1d  (jpij) , oatte_1d (jpij) ,     & 
    151151         &      hfx_sum_1d(jpij) , hfx_bom_1d(jpij) ,hfx_bog_1d(jpij),     & 
    152152         &      hfx_dif_1d(jpij) ,hfx_opw_1d(jpij) , & 
     
    155155         &      hfx_res_1d(jpij) , hfx_err_rem_1d(jpij),       STAT=ierr(1) ) 
    156156      ! 
    157       ALLOCATE( sprecip_1d (jpij) , frld_1d    (jpij) , at_i_b     (jpij) ,     & 
     157      ALLOCATE( sprecip_1d (jpij) , frld_1d    (jpij) , at_i_1d     (jpij) ,     & 
    158158         &      fhtur_1d   (jpij) , wfx_snw_1d (jpij) , wfx_spr_1d (jpij) ,     & 
    159159         &      fhld_1d    (jpij) , wfx_sub_1d (jpij) , wfx_bog_1d(jpij) , wfx_bom_1d(jpij) , & 
     
    165165         &      sfx_sni_1d (jpij) , sfx_opw_1d (jpij) , sfx_res_1d (jpij) , & 
    166166         &      dsm_i_fl_1d(jpij) , dsm_i_gd_1d(jpij) , dsm_i_se_1d(jpij) ,     &      
    167          &      dsm_i_si_1d(jpij) , hicol_b    (jpij)                     , STAT=ierr(2) ) 
     167         &      dsm_i_si_1d(jpij) , hicol_1d    (jpij)                     , STAT=ierr(2) ) 
    168168      ! 
    169       ALLOCATE( t_su_b    (jpij) , a_i_b    (jpij) , ht_i_b   (jpij) ,    &    
    170          &      ht_s_b    (jpij) , fc_su    (jpij) , fc_bo_i  (jpij) ,    &     
     169      ALLOCATE( t_su_1d    (jpij) , a_i_1d    (jpij) , ht_i_1d   (jpij) ,    &    
     170         &      ht_s_1d    (jpij) , fc_su    (jpij) , fc_bo_i  (jpij) ,    &     
    171171         &      dh_s_tot  (jpij) , dh_i_surf(jpij) , dh_i_bott(jpij) ,    &     
    172          &      dh_snowice(jpij) , sm_i_b   (jpij) , s_i_new  (jpij) ,    & 
    173          &      t_s_b(jpij,nlay_s),                                       & 
    174          &      t_i_b(jpij,jkmax), s_i_b(jpij,jkmax)                ,     &             
    175          &      q_i_b(jpij,jkmax), q_s_b(jpij,jkmax)                ,     & 
     172         &      dh_snowice(jpij) , sm_i_1d   (jpij) , s_i_new  (jpij) ,    & 
     173         &      t_s_1d(jpij,nlay_s),                                       & 
     174         &      t_i_1d(jpij,jkmax), s_i_1d(jpij,jkmax)                ,     &             
     175         &      q_i_1d(jpij,jkmax), q_s_1d(jpij,jkmax)                ,     & 
    176176         &      qh_i_old(jpij,0:jkmax), h_i_old(jpij,0:jkmax) , STAT=ierr(3)) 
    177177      ! 
Note: See TracChangeset for help on using the changeset viewer.