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/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90 – NEMO

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

LIM3: replacing old_ by _b

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.