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 12831 for NEMO – NEMO

Changeset 12831 for NEMO


Ignore:
Timestamp:
2020-04-29T17:10:26+02:00 (4 years ago)
Author:
clem
Message:

thin snow only partially shades melt ponds and ice as for light penetration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_pnd.F90

    r12811 r12831  
    3535   !                                   ! associated indices: 
    3636   INTEGER, PARAMETER ::   np_pndNO  = 0   ! No pond scheme 
    37    INTEGER, PARAMETER ::   np_pndCST = 1   ! Constant pond scheme 
    38    INTEGER, PARAMETER ::   np_pndH12 = 2   ! Evolutive pond scheme (Holland et al. 2012) 
     37   INTEGER, PARAMETER ::   np_pndCST = 1   ! Constant ice pond scheme 
     38   INTEGER, PARAMETER ::   np_pndLEV = 2   ! Level ice pond scheme 
    3939 
    4040   !! * Substitutions 
     
    5151      !!               ***  ROUTINE ice_thd_pnd   *** 
    5252      !!                
    53       !! ** Purpose :   change melt pond fraction 
     53      !! ** Purpose :   change melt pond fraction and thickness 
    5454      !!                 
    55       !! ** Method  :   brut force 
    5655      !!------------------------------------------------------------------- 
    5756      ! 
     
    6059      CASE (np_pndCST)   ;   CALL pnd_CST    !==  Constant melt ponds  ==! 
    6160         ! 
    62       CASE (np_pndH12)   ;   CALL pnd_H12    !==  Holland et al 2012 melt ponds  ==! 
     61      CASE (np_pndLEV)   ;   CALL pnd_LEV    !==  Level ice melt ponds  ==! 
    6362         ! 
    6463      END SELECT 
     
    102101 
    103102 
    104    SUBROUTINE pnd_H12 
    105       !!------------------------------------------------------------------- 
    106       !!                ***  ROUTINE pnd_H12  *** 
     103   SUBROUTINE pnd_LEV 
     104      !!------------------------------------------------------------------- 
     105      !!                ***  ROUTINE pnd_LEV  *** 
    107106      !! 
    108107      !! ** Purpose : Compute melt pond evolution 
     
    196195            !--- available meltwater for melt ponding ---! 
    197196            zdum    = -( dh_i_sum(ji)*rhoi + dh_s_mlt(ji)*rhos ) * z1_rhow * a_i_1d(ji) 
    198             zfr_mlt = rn_apnd_min + ( rn_apnd_max - rn_apnd_min ) * at_i_1d(ji) !  = ( 1 - r ) in H12 = fraction of melt water that is not flushed 
     197            zfr_mlt = rn_apnd_min + ( rn_apnd_max - rn_apnd_min ) * at_i_1d(ji) !  = ( 1 - r ) = fraction of melt water that is not flushed 
    199198            zdv_mlt = MAX( 0._wp, zfr_mlt * zdum ) ! max for roundoff errors?  
    200199            ! 
     
    261260            ! Pond flushing ! 
    262261            !---------------! 
    263             IF( ln_pnd_flush ) THEN 
    264                ! height of top of the pond above sea-level 
    265                zhp = ( h_i_1d(ji) * ( rau0 - rhoi ) + h_ip_1d(ji) * ( rau0 - rhow * a_ip_1d(ji) / a_i_1d(ji) ) ) * r1_rau0 
    266  
    267                ! Calculate the permeability of the ice (Assur 1958, see Flocco 2010) 
    268                DO jk = 1, nlay_i 
    269                   zsbr = - 1.2_wp                                  & 
    270                      &   - 21.8_wp    * ( t_i_1d(ji,jk) - rt0 )    & 
    271                      &   - 0.919_wp   * ( t_i_1d(ji,jk) - rt0 )**2 & 
    272                      &   - 0.0178_wp  * ( t_i_1d(ji,jk) - rt0 )**3 
    273                   ztmp(jk) = sz_i_1d(ji,jk) / zsbr 
    274                END DO 
    275                zperm = MAX( 0._wp, 3.e-08_wp * MINVAL(ztmp)**3 ) 
    276  
    277                ! Do the drainage using Darcy's law 
    278                zdv_flush   = -zperm * rau0 * grav * zhp * rdt_ice / (zvisc * h_i_1d(ji)) * a_ip_1d(ji) 
    279                zdv_flush   = MAX( zdv_flush, -v_ip_1d(ji) ) 
    280                v_ip_1d(ji) = v_ip_1d(ji) + zdv_flush 
    281                 
    282                !--- Set new pond area and depth ---! assuming linear relation between h_ip and a_ip_frac 
    283                a_ip_1d(ji)      = MIN( a_i_1d(ji), SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) ) ! make sure a_ip < a_i 
    284                h_ip_1d(ji)      = zaspect * a_ip_1d(ji) / a_i_1d(ji) 
    285  
    286             ENDIF 
     262            ! height of top of the pond above sea-level 
     263            zhp = ( h_i_1d(ji) * ( rau0 - rhoi ) + h_ip_1d(ji) * ( rau0 - rhow * a_ip_1d(ji) / a_i_1d(ji) ) ) * r1_rau0 
     264             
     265            ! Calculate the permeability of the ice (Assur 1958, see Flocco 2010) 
     266            DO jk = 1, nlay_i 
     267               zsbr = - 1.2_wp                                  & 
     268                  &   - 21.8_wp    * ( t_i_1d(ji,jk) - rt0 )    & 
     269                  &   - 0.919_wp   * ( t_i_1d(ji,jk) - rt0 )**2 & 
     270                  &   - 0.0178_wp  * ( t_i_1d(ji,jk) - rt0 )**3 
     271               ztmp(jk) = sz_i_1d(ji,jk) / zsbr 
     272            END DO 
     273            zperm = MAX( 0._wp, 3.e-08_wp * MINVAL(ztmp)**3 ) 
     274             
     275            ! Do the drainage using Darcy's law 
     276            zdv_flush   = -zperm * rau0 * grav * zhp * rdt_ice / (zvisc * h_i_1d(ji)) * a_ip_1d(ji) 
     277            zdv_flush   = MAX( zdv_flush, -v_ip_1d(ji) ) 
     278            v_ip_1d(ji) = v_ip_1d(ji) + zdv_flush 
     279             
     280            !--- Set new pond area and depth ---! assuming linear relation between h_ip and a_ip_frac 
     281            a_ip_1d(ji)      = MIN( a_i_1d(ji), SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) ) ! make sure a_ip < a_i 
     282            h_ip_1d(ji)      = zaspect * a_ip_1d(ji) / a_i_1d(ji) 
    287283 
    288284            !--- Corrections and lid thickness ---! 
     
    304300      END DO 
    305301      ! 
    306    END SUBROUTINE pnd_H12 
     302   END SUBROUTINE pnd_LEV 
    307303 
    308304 
     
    321317      INTEGER  ::   ios, ioptio   ! Local integer 
    322318      !! 
    323       NAMELIST/namthd_pnd/  ln_pnd, ln_pnd_H12, ln_pnd_lids, ln_pnd_flush, rn_apnd_min, rn_apnd_max, & 
    324          &                          ln_pnd_CST, rn_apnd, rn_hpnd, & 
    325          &                          ln_pnd_alb 
     319      NAMELIST/namthd_pnd/  ln_pnd, ln_pnd_LEV , rn_apnd_min, rn_apnd_max, & 
     320         &                          ln_pnd_CST , rn_apnd, rn_hpnd,        & 
     321         &                          ln_pnd_lids, ln_pnd_alb 
    326322      !!------------------------------------------------------------------- 
    327323      ! 
     
    340336         WRITE(numout,*) '   Namelist namicethd_pnd:' 
    341337         WRITE(numout,*) '      Melt ponds activated or not                                 ln_pnd       = ', ln_pnd 
    342          WRITE(numout,*) '         Evolutive  melt pond fraction and depth                  ln_pnd_H12   = ', ln_pnd_H12 
    343          WRITE(numout,*) '            Melt ponds can have frozen lids                       ln_pnd_lids  = ', ln_pnd_lids 
    344          WRITE(numout,*) '            Allow ponds to flush thru the ice                     ln_pnd_flush = ', ln_pnd_flush 
     338         WRITE(numout,*) '         Level ice melt pond scheme                               ln_pnd_LEV   = ', ln_pnd_LEV 
    345339         WRITE(numout,*) '            Minimum ice fraction that contributes to melt ponds   rn_apnd_min  = ', rn_apnd_min 
    346340         WRITE(numout,*) '            Maximum ice fraction that contributes to melt ponds   rn_apnd_max  = ', rn_apnd_max 
    347          WRITE(numout,*) '         Prescribed melt pond fraction and depth                  ln_pnd_CST   = ', ln_pnd_CST 
     341         WRITE(numout,*) '         Constant ice melt pond scheme                            ln_pnd_CST   = ', ln_pnd_CST 
    348342         WRITE(numout,*) '            Prescribed pond fraction                              rn_apnd      = ', rn_apnd 
    349343         WRITE(numout,*) '            Prescribed pond depth                                 rn_hpnd      = ', rn_hpnd 
     344         WRITE(numout,*) '         Frozen lids on top of melt ponds                         ln_pnd_lids  = ', ln_pnd_lids 
    350345         WRITE(numout,*) '         Melt ponds affect albedo or not                          ln_pnd_alb   = ', ln_pnd_alb 
    351346      ENDIF 
     
    355350      IF( .NOT.ln_pnd ) THEN   ;   ioptio = ioptio + 1   ;   nice_pnd = np_pndNO     ;   ENDIF 
    356351      IF( ln_pnd_CST  ) THEN   ;   ioptio = ioptio + 1   ;   nice_pnd = np_pndCST    ;   ENDIF 
    357       IF( ln_pnd_H12  ) THEN   ;   ioptio = ioptio + 1   ;   nice_pnd = np_pndH12    ;   ENDIF 
     352      IF( ln_pnd_LEV  ) THEN   ;   ioptio = ioptio + 1   ;   nice_pnd = np_pndLEV    ;   ENDIF 
    358353      IF( ioptio /= 1 )   & 
    359          & CALL ctl_stop( 'ice_thd_pnd_init: choose either none (ln_pnd=F) or only one pond scheme (ln_pnd_H12 or ln_pnd_CST)' ) 
     354         & CALL ctl_stop( 'ice_thd_pnd_init: choose either none (ln_pnd=F) or only one pond scheme (ln_pnd_LEV or ln_pnd_CST)' ) 
    360355      ! 
    361356      SELECT CASE( nice_pnd ) 
    362357      CASE( np_pndNO )          
    363          IF( ln_pnd_alb ) THEN ; ln_pnd_alb = .FALSE. ; CALL ctl_warn( 'ln_pnd_alb=false when no ponds' ) ; ENDIF 
     358         IF( ln_pnd_alb  ) THEN ; ln_pnd_alb  = .FALSE. ; CALL ctl_warn( 'ln_pnd_alb=false when no ponds' )  ; ENDIF 
     359         IF( ln_pnd_lids ) THEN ; ln_pnd_lids = .FALSE. ; CALL ctl_warn( 'ln_pnd_lids=false when no ponds' ) ; ENDIF 
     360      CASE( np_pndCST )          
     361         IF( ln_pnd_lids ) THEN ; ln_pnd_lids = .FALSE. ; CALL ctl_warn( 'ln_pnd_lids=false when constant ponds' ) ; ENDIF 
    364362      END SELECT 
    365363      ! 
Note: See TracChangeset for help on using the changeset viewer.