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

    r4099 r4332  
    3232   PUBLIC   lim_thd_dh   ! called by lim_thd 
    3333 
    34    REAL(wp) ::   epsi20 = 1e-20   ! constant values 
    35    REAL(wp) ::   epsi13 = 1e-13   ! 
    36    REAL(wp) ::   epsi16 = 1e-16   ! 
    37    REAL(wp) ::   zzero  = 0.e0    ! 
    38    REAL(wp) ::   zone   = 1.e0    ! 
     34   REAL(wp) ::   epsi20 = 1.e-20   ! constant values 
     35   REAL(wp) ::   epsi10 = 1.e-10   ! 
     36   REAL(wp) ::   epsi13 = 1.e-13   ! 
     37   REAL(wp) ::   zzero  = 0._wp    ! 
     38   REAL(wp) ::   zone   = 1._wp    ! 
    3939 
    4040   !!---------------------------------------------------------------------- 
     
    125125      INTEGER  ::   num_iter_max, numce_dh 
    126126      REAL(wp) ::   meance_dh 
     127      REAL(wp) ::   zinda  
    127128      REAL(wp), POINTER, DIMENSION(:) ::   zinnermelt 
    128129      REAL(wp), POINTER, DIMENSION(:) ::   zfbase, zdq_i 
     
    288289      END DO 
    289290 
    290       !                     !------------------- 
    291       IF( con_i ) THEN      ! Conservation test 
    292          !                  !------------------- 
     291      !                                          !------------------- 
     292      IF( con_i .AND. jiindex_1d > 0 ) THEN      ! Conservation test 
     293         !                                       !------------------- 
    293294         numce_dh  = 0 
    294295         meance_dh = 0._wp 
     
    494495      END DO ! jk 
    495496 
    496       !                     !------------------- 
    497       IF( con_i ) THEN      ! Conservation test 
    498       !                     !------------------- 
     497      !                                          !------------------- 
     498      IF( con_i .AND. jiindex_1d > 0 ) THEN      ! Conservation test 
     499      !                                          !------------------- 
    499500         DO ji = kideb, kiut 
    500501            IF(  ( fc_bo_i(ji) + fbif_1d(ji) + qlbbq_1d(ji) ) >= 0.e0  ) THEN 
     
    544545         sfx_thd_1d(ji)  = sfx_thd_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdvres * rhoic * r1_rdtice 
    545546         !                     ! excessive energy is sent to lateral ablation 
    546          fsup     (ji) =  rhoic * lfus * at_i_b(ji) / MAX( 1.0 - at_i_b(ji) , epsi13 ) * zdvres * r1_rdtice 
     547         zinda = MAX( 0._wp, SIGN( 1._wp , 1.0 - at_i_b(ji) - epsi10 ) ) 
     548         fsup(ji) =  zinda * rhoic * lfus * at_i_b(ji) / MAX( 1.0 - at_i_b(ji) , epsi10 ) * zdvres * r1_rdtice 
    547549      END DO 
    548550 
     
    577579 
    578580         ! energy of melting of remaining snow 
    579          zqt_s(ji) =    ( 1. - zihg ) * zqt_s(ji) / MAX( zhni, epsi13 ) 
     581         zinda = MAX( 0._wp, SIGN( 1._wp , zhni - epsi10 ) ) 
     582         zqt_s(ji) =    ( 1. - zihg ) * zqt_s(ji) / MAX( zhni, epsi10 ) * zinda 
    580583         zdhnm     =  - ( 1. - zihg ) * ( 1. - zihgnew ) * zfdt_final(ji) / MAX( zqt_s(ji) , epsi13 ) 
    581584         zhnfi     =  zhni + zdhnm 
     
    613616         ENDIF 
    614617         ! 
    615          ! diagnostic ( bottom ice growth ) 
     618         ! diagnostic  
    616619         ii = MOD( npb(ji) - 1, jpi ) + 1 
    617620         ij = ( npb(ji) - 1 ) / jpi + 1 
     
    689692         ! clem: new salinity difference stored (to be used in limthd_ent.F90) 
    690693         IF (  num_sal == 2  ) THEN 
    691             i_ice_switch = 1.0 - MAX( 0.e0 , SIGN( 1.0 , - zhgnew(ji) + epsi13 ) ) 
     694            i_ice_switch = MAX( 0._wp , SIGN( 1._wp , zhgnew(ji) - epsi10 ) ) 
    692695            ! salinity dif due to snow-ice formation 
    693             dsm_i_si_1d(ji) = ( zsm_snowice - sm_i_b(ji) ) * dh_snowice(ji) / MAX( zhgnew(ji), epsi13 ) * i_ice_switch      
     696            dsm_i_si_1d(ji) = ( zsm_snowice - sm_i_b(ji) ) * dh_snowice(ji) / MAX( zhgnew(ji), epsi10 ) * i_ice_switch      
    694697            ! salinity dif due to bottom growth  
    695698            IF (  fc_bo_i(ji) + fbif_1d(ji) + qlbbq_1d(ji)  < 0._wp ) THEN 
    696                dsm_i_se_1d(ji) = ( s_i_new(ji) - sm_i_b(ji) ) * dh_i_bott(ji) / MAX( zhgnew(ji), epsi13 ) * i_ice_switch 
     699               dsm_i_se_1d(ji) = ( s_i_new(ji) - sm_i_b(ji) ) * dh_i_bott(ji) / MAX( zhgnew(ji), epsi10 ) * i_ice_switch 
    697700            ENDIF 
    698701         ENDIF 
Note: See TracChangeset for help on using the changeset viewer.