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 15252 – NEMO

Changeset 15252


Ignore:
Timestamp:
2021-09-14T10:32:15+02:00 (3 years ago)
Author:
dcarneir
Message:

Improving and fixing bugs in the IAU for SIC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.4_FOAM_IAU_SI3_SIC/src/OCE/ASM/asminc.F90

    r15242 r15252  
    9797   REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   a_i_bkginc          ! Increment to the background sea ice conc categories 
    9898#endif 
    99    REAL(wp) :: zhi_damin = 0.5_wp !: ice thickness for new sea ice from da increment 
     99   REAL(wp) :: zhi_damin = 0.45_wp !: ice thickness for new sea ice from da increment 
    100100   INTEGER  :: nhi_damin          !: thickness category corresponding to zhi_damin 
    101101   LOGICAL, PUBLIC, DIMENSION(:,:,:), ALLOCATABLE :: incr_newice !: mask .TRUE.=DA positive ice increment to open water 
     
    161161      ln_seaiceinc   = .FALSE. 
    162162      ln_temnofreeze = .FALSE. 
    163       zhi_damin = 0.5_wp 
     163      zhi_damin = 0.45_wp 
    164164      zopenwater_lim = 1.0e-2_wp 
    165165 
     
    900900      REAL(wp) ::   zincwgt   ! IAU weight for current time step 
    901901#if defined key_si3 
    902       REAL(wp), DIMENSION(jpi,jpj,jpl) :: da_i  ! change in ice concentration 
     902      REAL(wp), DIMENSION(jpi,jpj,jpl) :: da_i    ! change in ice concentration 
     903      REAL(wp), DIMENSION(jpi,jpj,jpl) :: dv_i    ! change in ice volume 
    903904      REAL(wp), DIMENSION(jpi,jpj,jpl) :: z1_a_i  ! inverse of old ice concentration 
     905      REAL(wp), DIMENSION(jpi,jpj,jpl) :: z1_v_i  ! inverse of old ice volume 
    904906      REAL(wp) :: rn_hinew_save 
    905907      LOGICAL, SAVE :: initial_step=.TRUE. 
     
    929931            WHERE( a_i(:,:,:) > epsi10 ) 
    930932               z1_a_i(:,:,:) = 1.0_wp/a_i(:,:,:) 
     933               z1_v_i(:,:,:) = 1.0_wp/v_i(:,:,:) 
    931934            ELSEWHERE 
    932935               z1_a_i(:,:,:) = 0.0_wp 
     936               z1_v_i(:,:,:) = 0.0_wp 
    933937            END WHERE 
    934938 
     
    952956            WHERE ( incr_newice ) 
    953957               da_i(:,:,:) = 1.0_wp 
     958               dv_i(:,:,:) = 1.0_wp 
    954959            ELSEWHERE 
    955960               da_i(:,:,:) = a_i(:,:,:) * z1_a_i(:,:,:) 
     961               dv_i(:,:,:) = v_i(:,:,:) * z1_v_i(:,:,:) 
    956962            END WHERE 
    957963 
     
    993999 
    9941000               qlead = 0.0_wp 
    995                at_i_bkginc(:,:) = SUM( a_i_bkginc(:,:,:)*zincwgt, DIM=3 ) 
     1001               at_i_bkginc(:,:) = SUM( a_i_bkginc(:,:,:), DIM=3 ) 
    9961002 
    9971003               call seaice_asm_qlead(ht_i_new, at_i_bkginc, qlead) 
     
    10031009               rn_hinew = rn_hinew_save 
    10041010 
    1005                incr_newice(:,:,:) = .FALSE. 
    10061011               initial_step = .FALSE. 
    10071012            END IF 
    10081013 
    1009             ! as ice concentration has changed, maintain equivalent values for prognostic variables 
    1010             v_s  (:,:,:) = v_s (:,:,:) * da_i(:,:,:) 
    1011             sv_i (:,:,:) = sv_i(:,:,:) * da_i(:,:,:) 
    1012             a_ip (:,:,:) = a_ip(:,:,:) * da_i(:,:,:) 
    1013             v_ip (:,:,:) = v_ip(:,:,:) * da_i(:,:,:) 
     1014            ! maintain equivalent values for prognostic variables 
     1015            v_s  (:,:,:) = v_s (:,:,:) * da_i(:,:,:)        ! snow volume 
     1016            DO jl = 1, nlay_s 
     1017               e_s(:,:,jl,:) = e_s(:,:,jl,:) * da_i(:,:,:)  ! snow entalphy 
     1018            END DO 
     1019            ! Passive microwave cannot detect ice ponds 
     1020            ! However it should be valid to reduce pond  
     1021            ! area/volume when ice is removed (da_i < 1) 
     1022            WHERE ( da_i < 1 ) 
     1023                  a_ip (:,:,:) = a_ip(:,:,:) * da_i(:,:,:)  ! pond concentration 
     1024                  v_ip (:,:,:) = v_ip(:,:,:) * da_i(:,:,:)  ! pond volume 
     1025            END WHERE 
     1026  
     1027            ! ice volume dependent variables 
     1028            sv_i (:,:,:) = sv_i(:,:,:) * dv_i(:,:,:)        ! ice salt content 
    10141029            DO jl = 1, nlay_i 
    1015                e_i(:,:,jl,:) = e_i(:,:,jl,:) * da_i(:,:,:) 
    1016             END DO 
    1017             DO jl = 1, nlay_s 
    1018                e_s(:,:,jl,:) = e_s(:,:,jl,:) * da_i(:,:,:) 
     1030               e_i(:,:,jl,:) = e_i(:,:,jl,:) * dv_i(:,:,:)  ! ice entalphy 
    10191031            END DO 
    10201032 
Note: See TracChangeset for help on using the changeset viewer.