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_lac.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_lac.F90

    r4045 r4332  
    3636   PUBLIC lim_thd_lac     ! called by lim_thd 
    3737 
    38    REAL(wp) ::   epsi20 = 1e-20_wp   ! constant values 
    39    REAL(wp) ::   epsi13 = 1e-13_wp   ! 
    40    REAL(wp) ::   epsi11 = 1e-11_wp   ! 
    41    REAL(wp) ::   epsi10 = 1e-10_wp   ! 
    42    REAL(wp) ::   epsi06 = 1e-06_wp   ! 
    43    REAL(wp) ::   epsi03 = 1e-03_wp   ! 
     38   REAL(wp) ::   epsi10 = 1.e-10_wp   ! 
    4439   REAL(wp) ::   zzero  = 0._wp      ! 
    4540   REAL(wp) ::   zone   = 1._wp      ! 
     
    160155                  !Energy of melting q(S,T) [J.m-3] 
    161156                  e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) / MAX( area(ji,jj) * v_i(ji,jj,jl) ,  epsi10 ) * REAL( nlay_i ) 
    162                   zindb = 1._wp - MAX(  0._wp , SIGN( 1._wp , -v_i(ji,jj,jl) )  )   !0 if no ice and 1 if yes 
     157                  zindb = 1._wp - MAX(  0._wp , SIGN( 1._wp , -v_i(ji,jj,jl) + epsi10 )  )   !0 if no ice and 1 if yes 
    163158                  e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * unit_fac * zindb 
    164159               END DO 
     
    286281               nbpac = nbpac + 1 
    287282               npac( nbpac ) = (jj - 1) * jpi + ji 
    288                IF( ji == jiindx .AND. jj == jjindx )   jiindex_1d = nbpac 
    289283            ENDIF 
    290284         END DO 
    291285      END DO 
    292286 
    293       IF( ln_nicep )   WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac 
     287      ! debug point to follow 
     288      jiindex_1d = 0 
     289      IF( ln_nicep ) THEN 
     290         DO ji = mi0(jiindx), mi1(jiindx) 
     291            DO jj = mj0(jjindx), mj1(jjindx) 
     292               IF ( tms(ji,jj) * ( qcmif(ji,jj) - qldif(ji,jj) )  >  0._wp ) THEN 
     293                  jiindex_1d = (jj - 1) * jpi + ji 
     294               ENDIF 
     295            END DO 
     296         END DO 
     297      ENDIF 
     298    
     299      IF( ln_nicep ) WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac 
    294300 
    295301      !------------------------------ 
     
    499505         END DO 
    500506 
    501          IF( ln_nicep ) WRITE(numout,*) ' zv_i_ac : ', zv_i_ac(jiindx, 1:jpl) 
     507         IF( ln_nicep .AND. jiindex_1d > 0 ) WRITE(numout,*) ' zv_i_ac : ', zv_i_ac(jiindex_1d, 1:jpl) 
    502508         DO jl = ice_cat_bounds(jm,1), ice_cat_bounds(jm,2) 
    503509            DO ji = 1, nbpac 
    504510               zindb = MAX( 0._wp, SIGN( 1._wp , zdv_res(ji) ) ) 
    505                zinda = MAX( 0._wp, SIGN( 1._wp , zat_i_lev(ji) - epsi06 ) )  ! clem 
    506                zv_i_ac(ji,jl) = zv_i_ac(ji,jl) + zindb * zinda * zdv_res(ji) * za_i_ac(ji,jl) / MAX( zat_i_lev(ji) , epsi06 ) 
    507             END DO 
    508          END DO 
    509          IF( ln_nicep )   WRITE(numout,*) ' zv_i_ac : ', zv_i_ac(jiindx, 1:jpl) 
     511               zinda = MAX( 0._wp, SIGN( 1._wp , zat_i_lev(ji) - epsi10 ) )  ! clem 
     512               zv_i_ac(ji,jl) = zv_i_ac(ji,jl) + zindb * zinda * zdv_res(ji) * za_i_ac(ji,jl) / MAX( zat_i_lev(ji) , epsi10 ) 
     513            END DO 
     514         END DO 
     515         IF( ln_nicep .AND. jiindex_1d > 0 )   WRITE(numout,*) ' zv_i_ac : ', zv_i_ac(jiindex_1d, 1:jpl) 
    510516 
    511517         !--------------------------------- 
     
    649655         !     CALL lim_cons_check (et_s_init, et_s_final, 1.0e-3, fieldid)  
    650656         IF( ln_nicep ) THEN 
    651             WRITE(numout,*) ' vt_i_init : ', vt_i_init(jiindx,jjindx) 
    652             WRITE(numout,*) ' vt_i_final: ', vt_i_final(jiindx,jjindx) 
    653             WRITE(numout,*) ' et_i_init : ', et_i_init(jiindx,jjindx) 
    654             WRITE(numout,*) ' et_i_final: ', et_i_final(jiindx,jjindx) 
     657            DO ji = mi0(jiindx), mi1(jiindx) 
     658               DO jj = mj0(jjindx), mj1(jjindx) 
     659                  WRITE(numout,*) ' vt_i_init : ', vt_i_init (ji,jj) 
     660                  WRITE(numout,*) ' vt_i_final: ', vt_i_final(ji,jj) 
     661                  WRITE(numout,*) ' et_i_init : ', et_i_init (ji,jj) 
     662                  WRITE(numout,*) ' et_i_final: ', et_i_final(ji,jj) 
     663               END DO 
     664            END DO 
    655665         ENDIF 
    656666         ! 
Note: See TracChangeset for help on using the changeset viewer.