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 12449 for NEMO/branches/UKMO/NEMO_4.0_add_pond_lids_prints/src/ICE/icethd_dh.F90 – NEMO

Ignore:
Timestamp:
2020-02-24T18:04:40+01:00 (4 years ago)
Author:
dancopsey
Message:
  • Snow into meltponds contributes to snow to ice diagnostics affecting thickness and salinity of the ice.
  • Avoid divide by zero errors by:
    • Removing meltponds from small ice areas.
    • Removing divide by pond fractions apart from lid shrinking there a minimum pond fraction is imnposed
  • Ponds leaking into the ocean have a salinity flux to the ocean (also a new diagnostic).
  • Add vertical fluxing of pond water.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0_add_pond_lids_prints/src/ICE/icethd_dh.F90

    r12439 r12449  
    9999      REAL(wp), DIMENSION(jpij,nlay_i) ::   zh_i      ! ice layer thickness 
    100100      REAL(wp), DIMENSION(jpij,nlay_i) ::   zdeltah 
     101      REAL(wp), DIMENSION(jpij,nlay_i) ::   zdeltah_pnd  ! Change in thickness due to melting into ponds 
    101102      INTEGER , DIMENSION(jpij,nlay_i) ::   icount    ! number of layers vanished by melting  
    102103 
     
    281282               zdeltah  (ji,jk) = MAX( zdeltah(ji,jk) , - zh_s(ji,jk) )                   ! bound melting 
    282283               zdh_s_mel(ji)    = zdh_s_mel(ji) + zdeltah(ji,jk) 
     284               zdeltah_pnd(ji,jk) = zdeltah  (ji,jk) * a_pnd_avail_1d(ji) 
    283285                
    284286               hfx_snw_1d(ji)     = hfx_snw_1d(ji)     - zdeltah(ji,jk) * a_i_1d(ji) * e_s_1d (ji,jk) * r1_rdtice   ! heat used to melt snow(W.m-2, >0) 
    285                wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhos           * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice   ! snow melting only = water into the ocean (then without snow precip) 
     287               wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhos           * a_i_1d(ji) * (zdeltah(ji,jk) - zdeltah_pnd(ji,jk)) * r1_rdtice   ! snow melting only = water into the ocean (then without snow precip) 
    286288                
    287289               ! updates available heat + thickness 
    288290               dh_s_mlt(ji)    = dh_s_mlt(ji) + zdeltah(ji,jk) 
    289                dh_s_pnd(ji)    = dh_s_pnd(ji) + zdeltah(ji,jk) * a_pnd_avail_1d(ji)                   ! Cumulate surface melt on areas contributing to melt ponds 
     291               dh_s_pnd(ji)    = dh_s_pnd(ji) + zdeltah_pnd(ji,jk)                ! Cumulate surface melt on areas contributing to melt ponds 
    290292               zq_top  (ji)    = MAX( 0._wp , zq_top(ji) + zdeltah(ji,jk) * e_s_1d(ji,jk) ) 
    291293               h_s_1d  (ji)    = MAX( 0._wp , h_s_1d(ji) + zdeltah(ji,jk) ) 
    292                h_i_1d  (ji)    = MAX( 0._wp , h_i_1d(ji) - zdeltah(ji,jk) * a_pnd_avail_1d(ji) * rhos * r1_rhoi )   ! Snow melt trapped in ponds contrbutes to ice thickness 
    293294               zh_s    (ji,jk) = MAX( 0._wp , zh_s(ji,jk) + zdeltah(ji,jk) ) 
     295 
     296               ! Snow melt trapped in ponds contrbutes to ice thickness and snow to ice conversion 
     297               h_i_1d  (ji)    = MAX( 0._wp , h_i_1d(ji) - zdeltah_pnd(ji,jk) * rhos * r1_rhoi )  
     298               wfx_sni_1d(ji)     = wfx_sni_1d(ji)     - a_i_1d(ji) * zdeltah_pnd(ji,jk) * rhos * r1_rdtice 
     299               wfx_snw_sni_1d(ji) = wfx_snw_sni_1d(ji) + a_i_1d(ji) * zdeltah_pnd(ji,jk) * rhos * r1_rdtice 
    294300               ! 
    295301            ENDIF 
     
    400406               zdE            =    zEi - zEw                          ! Specific enthalpy difference < 0 
    401407                
    402                zfmdt          = - zq_top(ji) / zdE                    ! Mass flux to the ocean [kg/m2, >0] 
    403                 
    404                zdeltah(ji,jk) = - zfmdt * r1_rhoi                     ! Melt of layer jk [m, <0] 
     408               zfmdt          = - zq_top(ji) / zdE                    ! Mass flux to the ocean or meltponds [kg/m2, >0] 
     409                
     410               zdeltah(ji,jk) = - zfmdt * r1_rhoi * (1._wp - a_pnd_avail_1d(ji))                    ! Melt of layer jk [m, <0] into the ocean 
     411               zdeltah_pnd(ji,jk) = - zfmdt * r1_rhoi * a_pnd_avail_1d(ji)                          ! Melt of layer jk [m, <0] into meltponds 
    405412                
    406413               zdeltah(ji,jk) = MIN( 0._wp , MAX( zdeltah(ji,jk) , - zh_i(ji,jk) ) )    ! Melt of layer jk cannot exceed the layer thickness [m, <0] 
     
    408415               zq_top(ji)      = MAX( 0._wp , zq_top(ji) - zdeltah(ji,jk) * rhoi * zdE ) ! update available heat 
    409416                
    410                dh_i_sum(ji)   = dh_i_sum(ji) + zdeltah(ji,jk) * (1._wp - a_pnd_avail_1d(ji))         ! Cumulate surface melt on areas not contributing to melt ponds 
    411                dh_i_pnd(ji)   = dh_i_pnd(ji) + zdeltah(ji,jk) * a_pnd_avail_1d(ji)                   ! Cumulate surface melt on areas contributing to melt ponds 
     417               dh_i_sum(ji)   = dh_i_sum(ji) + zdeltah(ji,jk)          ! Cumulate surface melt on areas not contributing to melt ponds 
     418               dh_i_pnd(ji)   = dh_i_pnd(ji) + zdeltah_pnd(ji,jk)      ! Cumulate surface melt on areas contributing to melt ponds 
    412419                
    413420               zfmdt          = - rhoi * zdeltah(ji,jk)               ! Recompute mass flux [kg/m2, >0] 
Note: See TracChangeset for help on using the changeset viewer.