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 5167 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90 – NEMO

Ignore:
Timestamp:
2015-03-24T18:35:00+01:00 (9 years ago)
Author:
clem
Message:

LIM3 bug fix. see ticket #1492 (forthcoming update) which also solve ticket #1497

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90

    r5134 r5167  
    7272      ! Constrain the thickness of the smallest category above himin 
    7373      !---------------------------------------------------------------------- 
    74       CALL lim_var_glo2eqv 
    7574      DO jj = 1, jpj  
    7675         DO ji = 1, jpi 
     76            rswitch = MAX( 0._wp , SIGN( 1._wp, a_i(ji,jj,1) - epsi20 ) )   !0 if no ice and 1 if yes 
     77            ht_i(ji,jj,1) = v_i (ji,jj,1) / MAX( a_i(ji,jj,1) , epsi20 ) * rswitch 
    7778            IF( v_i(ji,jj,1) > 0._wp .AND. ht_i(ji,jj,1) < rn_himin ) THEN 
    7879               a_i (ji,jj,1) = a_i(ji,jj,1) * ht_i(ji,jj,1) / rn_himin 
     
    9899         END DO 
    99100      END DO 
    100  
    101       !---------------------------------------------------- 
    102       ! Rebin categories with thickness out of bounds 
    103       !---------------------------------------------------- 
    104       IF ( jpl > 1 ) CALL lim_itd_th_reb( 1, jpl ) 
    105  
    106       !----------------- 
    107       ! zap small values 
    108       !----------------- 
    109       CALL lim_var_zapsmall 
    110101 
    111102      !--------------------- 
     
    117108               DO ji = 1, jpi 
    118109                  zsal            = smv_i(ji,jj,jl) 
    119                   smv_i(ji,jj,jl) = sm_i(ji,jj,jl) * v_i(ji,jj,jl) 
    120110                  ! salinity stays in bounds 
    121111                  rswitch         = 1._wp - MAX( 0._wp, SIGN( 1._wp, - v_i(ji,jj,jl) ) ) 
     
    127117         END DO 
    128118      ENDIF 
     119 
     120      !---------------------------------------------------- 
     121      ! Rebin categories with thickness out of bounds 
     122      !---------------------------------------------------- 
     123      IF ( jpl > 1 ) CALL lim_itd_th_reb( 1, jpl ) 
     124 
     125      !----------------- 
     126      ! zap small values 
     127      !----------------- 
     128      CALL lim_var_zapsmall 
    129129 
    130130      !------------------------------------------------------------------------------ 
     
    150150      v_ice(:,:) = v_ice(:,:) * vmask(:,:,1) 
    151151  
    152       ! for outputs 
    153       CALL lim_var_glo2eqv            ! equivalent variables (outputs) 
    154       CALL lim_var_agg(2)             ! aggregate ice thickness categories 
    155  
    156       ! conservation test 
    157       IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limupdate2', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    158  
    159152      ! ------------------------------------------------- 
    160153      ! Diagnostics 
     
    165158      afx_tot = afx_thd + afx_dyn 
    166159 
    167       ! heat content variation (W.m-2) 
    168160      DO jj = 1, jpj 
    169161         DO ji = 1, jpi             
    170             diag_heat_dhc(ji,jj) = diag_heat_dhc(ji,jj) -  & 
    171                &                   ( SUM( e_i(ji,jj,1:nlay_i,:) - e_i_b(ji,jj,1:nlay_i,:) ) +  &  
    172                &                     SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) )    & 
    173                &                   ) * r1_rdtice    
    174          END DO 
    175       END DO 
     162            ! heat content variation (W.m-2) 
     163            diag_heat(ji,jj) = diag_heat(ji,jj) -  & 
     164               &               ( SUM( e_i(ji,jj,1:nlay_i,:) - e_i_b(ji,jj,1:nlay_i,:) ) +  &  
     165               &                 SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) )    & 
     166               &               ) * r1_rdtice    
     167            ! salt, volume 
     168            diag_smvi(ji,jj) = diag_smvi(ji,jj) + SUM( smv_i(ji,jj,:) - smv_i_b(ji,jj,:) ) * rhoic * r1_rdtice 
     169            diag_vice(ji,jj) = diag_vice(ji,jj) + SUM( v_i  (ji,jj,:) - v_i_b  (ji,jj,:) ) * rhoic * r1_rdtice 
     170            diag_vsnw(ji,jj) = diag_vsnw(ji,jj) + SUM( v_s  (ji,jj,:) - v_s_b  (ji,jj,:) ) * rhosn * r1_rdtice 
     171         END DO 
     172      END DO 
     173 
     174      ! conservation test 
     175      IF( ln_limdiahsb ) CALL lim_cons_hsm(1, 'limupdate2', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
     176 
     177      ! for outputs 
     178      CALL lim_var_glo2eqv 
     179      CALL lim_var_agg(2) 
    176180 
    177181      ! ------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.