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 5079 for branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90 – NEMO

Ignore:
Timestamp:
2015-02-11T16:32:03+01:00 (9 years ago)
Author:
clem
Message:

LIM3: solve ticket #1421

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r5078 r5079  
    289289         ztsub  (ji) =  t_su_1d(ji)                              ! temperature at the beg of iter pr. 
    290290         ztsubit(ji) =  t_su_1d(ji)                              ! temperature at the previous iter 
    291          t_su_1d(ji) =  MIN( t_su_1d(ji), rtt - ztsu_err )       ! necessary 
     291         t_su_1d(ji) =  MIN( t_su_1d(ji), rt0 - ztsu_err )       ! necessary 
    292292         zerrit (ji) =  1000._wp                                 ! initial value of error 
    293293      END DO 
     
    318318         IF( nn_ice_thcon == 0 ) THEN      ! Untersteiner (1964) formula 
    319319            DO ji = kideb , kiut 
    320                ztcond_i(ji,0) = rcdic + zbeta * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rtt ) 
     320               ztcond_i(ji,0) = rcdic + zbeta * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 ) 
    321321               ztcond_i(ji,0) = MAX( ztcond_i(ji,0), zkimin ) 
    322322            END DO 
     
    324324               DO ji = kideb , kiut 
    325325                  ztcond_i(ji,jk) = rcdic + zbeta * ( s_i_1d(ji,jk) + s_i_1d(ji,jk+1) ) /  & 
    326                      MIN(-2.0_wp * epsi10, t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0_wp * rtt) 
     326                     MIN(-2.0_wp * epsi10, t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0_wp * rt0) 
    327327                  ztcond_i(ji,jk) = MAX( ztcond_i(ji,jk), zkimin ) 
    328328               END DO 
     
    332332         IF( nn_ice_thcon == 1 ) THEN      ! Pringle et al formula included: 2.11 + 0.09 S/T - 0.011.T 
    333333            DO ji = kideb , kiut 
    334                ztcond_i(ji,0) = rcdic + 0.090_wp * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rtt )   & 
    335                   &                   - 0.011_wp * ( t_i_1d(ji,1) - rtt 
     334               ztcond_i(ji,0) = rcdic + 0.090_wp * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 )   & 
     335                  &                   - 0.011_wp * ( t_i_1d(ji,1) - rt0 
    336336               ztcond_i(ji,0) = MAX( ztcond_i(ji,0), zkimin ) 
    337337            END DO 
     
    340340                  ztcond_i(ji,jk) = rcdic +                                                                       &  
    341341                     &                 0.09_wp * ( s_i_1d(ji,jk) + s_i_1d(ji,jk+1) )                              & 
    342                      &                 / MIN( -2._wp * epsi10, t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0_wp * rtt )   & 
    343                      &               - 0.0055_wp * ( t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0 * rtt 
     342                     &                 / MIN( -2._wp * epsi10, t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0_wp * rt0 )   & 
     343                     &               - 0.0055_wp * ( t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0 * rt0 
    344344                  ztcond_i(ji,jk) = MAX( ztcond_i(ji,jk), zkimin ) 
    345345               END DO 
    346346            END DO 
    347347            DO ji = kideb , kiut 
    348                ztcond_i(ji,nlay_i) = rcdic + 0.090_wp * s_i_1d(ji,nlay_i) / MIN( -epsi10, t_bo_1d(ji) - rtt )   & 
    349                   &                        - 0.011_wp * ( t_bo_1d(ji) - rtt 
     348               ztcond_i(ji,nlay_i) = rcdic + 0.090_wp * s_i_1d(ji,nlay_i) / MIN( -epsi10, t_bo_1d(ji) - rt0 )   & 
     349                  &                        - 0.011_wp * ( t_bo_1d(ji) - rt0 
    350350               ztcond_i(ji,nlay_i) = MAX( ztcond_i(ji,nlay_i), zkimin ) 
    351351            END DO 
     
    435435            DO ji = kideb , kiut 
    436436               ztitemp(ji,jk)   = t_i_1d(ji,jk) 
    437                zspeche_i(ji,jk) = cpic + zgamma * s_i_1d(ji,jk) / MAX( ( t_i_1d(ji,jk) - rtt ) * ( ztib(ji,jk) - rtt ), epsi10 ) 
     437               zspeche_i(ji,jk) = cpic + zgamma * s_i_1d(ji,jk) / MAX( ( t_i_1d(ji,jk) - rt0 ) * ( ztib(ji,jk) - rt0 ), epsi10 ) 
    438438               zeta_i(ji,jk)    = rdt_ice / MAX( rhoic * zspeche_i(ji,jk) * zh_i(ji), epsi10 ) 
    439439            END DO 
     
    532532               ENDIF 
    533533 
    534                IF ( t_su_1d(ji) < rtt ) THEN 
     534               IF ( t_su_1d(ji) < rt0 ) THEN 
    535535 
    536536                  !------------------------------------------------------------------------------| 
     
    576576               !------------------------------------------------------------------------------| 
    577577               ! 
    578                IF ( t_su_1d(ji) < rtt ) THEN 
     578               IF ( t_su_1d(ji) < rt0 ) THEN 
    579579                  ! 
    580580                  !------------------------------------------------------------------------------| 
     
    693693            isnow(ji)   = 1._wp - MAX( 0._wp , SIGN( 1._wp , -ht_s_1d(ji) ) ) 
    694694            ztsubit(ji) = t_su_1d(ji) 
    695             IF( t_su_1d(ji) < rtt ) & 
     695            IF( t_su_1d(ji) < rt0 ) & 
    696696               t_su_1d(ji) = ( zindtbis(ji,numeqmin(ji)) - ztrid(ji,numeqmin(ji),3) *  & 
    697697               &             ( isnow(ji) * t_s_1d(ji,1) + ( 1._wp - isnow(ji) ) * t_i_1d(ji,1) ) ) / zdiagbis(ji,numeqmin(ji))   
     
    705705         ! zerrit(ji) is a measure of error, it has to be under terr_dif 
    706706         DO ji = kideb , kiut 
    707             t_su_1d(ji) =  MAX(  MIN( t_su_1d(ji) , rtt ) , 190._wp  ) 
     707            t_su_1d(ji) =  MAX(  MIN( t_su_1d(ji) , rt0 ) , 190._wp  ) 
    708708            zerrit(ji)  =  ABS( t_su_1d(ji) - ztsubit(ji) )      
    709709         END DO 
     
    711711         DO jk  =  1, nlay_s 
    712712            DO ji = kideb , kiut 
    713                t_s_1d(ji,jk) = MAX(  MIN( t_s_1d(ji,jk), rtt ), 190._wp  ) 
     713               t_s_1d(ji,jk) = MAX(  MIN( t_s_1d(ji,jk), rt0 ), 190._wp  ) 
    714714               zerrit(ji)    = MAX( zerrit(ji), ABS( t_s_1d(ji,jk) - ztstemp(ji,jk) ) ) 
    715715            END DO 
     
    718718         DO jk  =  1, nlay_i 
    719719            DO ji = kideb , kiut 
    720                ztmelt_i      = -tmut * s_i_1d(ji,jk) + rtt  
     720               ztmelt_i      = -tmut * s_i_1d(ji,jk) + rt0  
    721721               t_i_1d(ji,jk) =  MAX( MIN( t_i_1d(ji,jk), ztmelt_i ), 190._wp ) 
    722722               zerrit(ji)    =  MAX( zerrit(ji), ABS( t_i_1d(ji,jk) - ztitemp(ji,jk) ) ) 
     
    762762         zdq(ji)        = - zq_ini(ji) + ( SUM( q_i_1d(ji,1:nlay_i) ) * ht_i_1d(ji) * r1_nlay_i +  & 
    763763            &                              SUM( q_s_1d(ji,1:nlay_s) ) * ht_s_1d(ji) * r1_nlay_s ) 
    764          IF( t_su_1d(ji) < rtt ) THEN  ! case T_su < 0degC 
     764         IF( t_su_1d(ji) < rt0 ) THEN  ! case T_su < 0degC 
    765765            zhfx_err(ji) = qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq(ji) * r1_rdtice  
    766766         ELSE                          ! case T_su = 0degC 
     
    790790      !----------------------------------------- 
    791791      DO ji = kideb, kiut 
    792          IF( t_su_1d(ji) < rtt ) THEN  ! case T_su < 0degC 
     792         IF( t_su_1d(ji) < rt0 ) THEN  ! case T_su < 0degC 
    793793            hfx_dif_1d(ji) = hfx_dif_1d(ji)  +   & 
    794794               &            ( qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_1d(ji) 
     
    834834      DO jk = 1, nlay_i             ! Sea ice energy of melting 
    835835         DO ji = kideb, kiut 
    836             ztmelts      = - tmut  * s_i_1d(ji,jk) + rtt  
    837             rswitch      = MAX( 0._wp , SIGN( 1._wp , -(t_i_1d(ji,jk) - rtt) - epsi20 ) ) 
     836            ztmelts      = - tmut  * s_i_1d(ji,jk) + rt0  
     837            rswitch      = MAX( 0._wp , SIGN( 1._wp , -(t_i_1d(ji,jk) - rt0) - epsi20 ) ) 
    838838            q_i_1d(ji,jk) = rhoic * ( cpic * ( ztmelts - t_i_1d(ji,jk) )                                                & 
    839                &                   + lfus * ( 1.0 - rswitch * ( ztmelts-rtt ) / MIN( t_i_1d(ji,jk) - rtt, -epsi20 ) )   & 
    840                &                   - rcp  *                   ( ztmelts-rtt )  )  
     839               &                   + lfus * ( 1.0 - rswitch * ( ztmelts-rt0 ) / MIN( t_i_1d(ji,jk) - rt0, -epsi20 ) )   & 
     840               &                   - rcp  *                   ( ztmelts-rt0 )  )  
    841841         END DO 
    842842      END DO 
    843843      DO jk = 1, nlay_s             ! Snow energy of melting 
    844844         DO ji = kideb, kiut 
    845             q_s_1d(ji,jk) = rhosn * ( cpic * ( rtt - t_s_1d(ji,jk) ) + lfus ) 
     845            q_s_1d(ji,jk) = rhosn * ( cpic * ( rt0 - t_s_1d(ji,jk) ) + lfus ) 
    846846         END DO 
    847847      END DO 
Note: See TracChangeset for help on using the changeset viewer.