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 4332 for branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90 – NEMO

Ignore:
Timestamp:
2013-12-11T15:38:42+01:00 (10 years ago)
Author:
clem
Message:

update LIM3 to fix remaining bugs. Now working in global and regional config.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90

    r4072 r4332  
    3636   PUBLIC   lim_thd_ent         ! called by lim_thd 
    3737 
    38    REAL(wp) ::   epsi20 = 1e-20_wp   ! constant values 
    39    REAL(wp) ::   epsi13 = 1e-13_wp   ! 
    40    REAL(wp) ::   epsi10 = 1e-10_wp   ! 
    41    REAL(wp) ::   epsi06 = 1e-06_wp   ! 
     38   REAL(wp) ::   epsi20 = 1.e-20_wp   ! constant values 
     39   REAL(wp) ::   epsi10 = 1.e-10_wp   ! 
    4240   REAL(wp) ::   zzero  = 0._wp      ! 
    4341   REAL(wp) ::   zone   = 1._wp      ! 
     
    122120      REAL(wp), POINTER, DIMENSION(:,:) ::   zhl0      ! old and new layer thicknesses  
    123121      REAL(wp), POINTER, DIMENSION(:,:) ::   zrl01 
     122 
     123      REAL(wp) ::   zinda  
    124124      !!------------------------------------------------------------------- 
    125125 
     
    391391         DO layer1 = ntop1, nbot1 
    392392            DO ji = kideb, kiut 
    393                zrl01(layer1,layer0) = MAX(0.0,( MIN(zm0(ji,layer0),z_s(ji,layer1))   & 
     393               zinda = MAX( 0._wp, SIGN( 1._wp , zhl0(ji,layer0) - epsi10 ) ) 
     394               zrl01(layer1,layer0) = zinda * MAX(0.0,( MIN(zm0(ji,layer0),z_s(ji,layer1))   & 
    394395                  &                 - MAX(zm0(ji,layer0-1), z_s(ji,layer1-1))) / MAX(zhl0(ji,layer0),epsi10))  
    395396               q_s_b(ji,layer1) = q_s_b(ji,layer1) + zrl01(layer1,layer0)*qm0(ji,layer0)   & 
     
    407408      END DO 
    408409 
    409       IF ( con_i ) THEN 
     410      IF ( con_i .AND. jiindex_1d > 0 ) THEN 
    410411         DO ji = kideb, kiut 
    411412            IF ( ABS ( zqts_in(ji) - zqts_fin(ji) ) * r1_rdtice  >  1.0e-6 ) THEN 
     
    429430      DO jk = 1, nlay_s 
    430431         DO ji = kideb, kiut 
    431             q_s_b(ji,jk) = q_s_b(ji,jk) / MAX( zh_s(ji) , epsi20 ) 
     432            zinda = MAX( 0._wp, SIGN( 1._wp , zh_s(ji) - epsi10 ) )         
     433            q_s_b(ji,jk) = zinda * q_s_b(ji,jk) / MAX( zh_s(ji) , epsi10 ) 
    432434         END DO !ji 
    433435      END DO !jk   
     
    555557         DO ji = kideb, kiut 
    556558            ! Heat conservation 
    557             zqti_in(ji) = zqti_in(ji) + qm0(ji,jk) * MAX( 0.0 , SIGN(1.0,ht_i_b(ji)-epsi06) ) & 
     559            zqti_in(ji) = zqti_in(ji) + qm0(ji,jk) * MAX( 0.0 , SIGN(1.0,ht_i_b(ji)-epsi10) ) & 
    558560               &                                   * MAX( 0.0 , SIGN( 1. , REAL(nbot0(ji) - jk) ) ) 
    559561         END DO 
     
    601603         DO layer1 = ntop1, nbot1 
    602604            DO ji = kideb, kiut 
    603                zrl01(layer1,layer0) = MAX(0.0,( MIN(zm0(ji,layer0),z_i(ji,layer1)) & 
     605               zinda = MAX( 0._wp, SIGN( 1._wp , zhl0(ji,layer0) - epsi10 ) ) 
     606               zrl01(layer1,layer0) = zinda * MAX(0.0,( MIN(zm0(ji,layer0),z_i(ji,layer1)) & 
    604607                  - MAX(zm0(ji,layer0-1), z_i(ji,layer1-1)))/MAX(zhl0(ji,layer0),epsi10)) 
    605608               q_i_b(ji,layer1) = q_i_b(ji,layer1) &  
    606609                  + zrl01(layer1,layer0)*qm0(ji,layer0) & 
    607                   * MAX(0.0,SIGN(1.0,ht_i_b(ji)-epsi06)) & 
     610                  * MAX(0.0,SIGN(1.0,ht_i_b(ji)-epsi10)) & 
    608611                  * MAX(0.0,SIGN(1.0,REAL(nbot0(ji)-layer0))) 
    609612            END DO 
     
    621624      END DO 
    622625      ! 
    623       IF ( con_i ) THEN 
     626      IF ( con_i .AND. jiindex_1d > 0 ) THEN 
    624627         DO ji = kideb, kiut 
    625628            IF ( ABS ( zqti_in(ji) - zqti_fin(ji) ) * r1_rdtice  >  1.0e-6 ) THEN 
     
    646649      DO jk = 1, nlay_i 
    647650         DO ji = kideb, kiut 
    648             q_i_b(ji,jk) = q_i_b(ji,jk) / MAX( zh_i(ji) , epsi20 ) 
     651            zinda = MAX( 0._wp, SIGN( 1._wp , zh_i(ji) - epsi10 ) ) 
     652            q_i_b(ji,jk) = zinda * q_i_b(ji,jk) / MAX( zh_i(ji) , epsi10 ) 
    649653         END DO !ji 
    650654      END DO !jk   
Note: See TracChangeset for help on using the changeset viewer.