Changeset 12725


Ignore:
Timestamp:
2020-04-09T15:48:28+02:00 (7 months ago)
Author:
clem
Message:

fix previous revision. Make sure a_ip and a_ip_eff are correct

Location:
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src
Files:
11 edited

Legend:

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

    r12720 r12725  
    353353   !! * Old values of global variables 
    354354   !!---------------------------------------------------------------------- 
    355    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   v_s_b, v_i_b, h_s_b, h_i_b, h_ip_b    !: snow and ice volumes/thickness 
    356    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   a_i_b, sv_i_b, oa_i_b                 !: 
    357    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_s_b                                 !: snow heat content 
    358    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_i_b                                 !: ice temperatures 
    359    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   u_ice_b, v_ice_b                      !: ice velocity 
    360    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   at_i_b                                !: ice concentration (total) 
     355   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   v_s_b, v_i_b, h_s_b, h_i_b     !: snow and ice volumes/thickness 
     356   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   a_i_b, sv_i_b                  !: 
     357   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_s_b                          !: snow heat content 
     358   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_i_b                          !: ice temperatures 
     359   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   u_ice_b, v_ice_b               !: ice velocity 
     360   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   at_i_b                         !: ice concentration (total) 
    361361             
    362362   !!---------------------------------------------------------------------- 
     
    469469      ! * Old values of global variables 
    470470      ii = ii + 1 
    471       ALLOCATE( v_s_b (jpi,jpj,jpl) , v_i_b (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl)        , h_i_b(jpi,jpj,jpl), h_ip_b(jpi,jpj,jpl),  & 
    472          &      a_i_b (jpi,jpj,jpl) , sv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,nlay_i,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) ,               & 
    473          &      oa_i_b(jpi,jpj,jpl)                                                   , STAT=ierr(ii) ) 
     471      ALLOCATE( v_s_b (jpi,jpj,jpl) , v_i_b (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl)        , h_i_b(jpi,jpj,jpl),         & 
     472         &      a_i_b (jpi,jpj,jpl) , sv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,nlay_i,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) , & 
     473         &      STAT=ierr(ii) ) 
    474474 
    475475      ii = ii + 1 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/ice1d.F90

    r12720 r12725  
    128128   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   h_ip_1d       !: 
    129129   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_ip_frac_1d  !: 
    130    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_ip_eff_1d   !: 
    131130   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   v_il_1d       !: Ice pond lid 
    132131   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   h_il_1d       !: 
     
    212211         &      dh_s_tot(jpij) , dh_i_sum(jpij) , dh_i_itm  (jpij) , dh_i_bom(jpij) , dh_i_bog(jpij) ,  &     
    213212         &      dh_i_sub(jpij) , dh_s_mlt(jpij) , dh_snowice(jpij) , s_i_1d  (jpij) , s_i_new (jpij) ,  & 
    214          &      a_ip_1d (jpij) , v_ip_1d (jpij) , v_i_1d    (jpij) , v_s_1d  (jpij) , v_il_1d (jpij) , h_il_1d(jpij) , & 
    215          &      h_ip_1d (jpij) , a_ip_frac_1d(jpij) , a_ip_eff_1d(jpij) ,                               & 
     213         &      a_ip_1d (jpij) , v_ip_1d (jpij) , v_i_1d    (jpij) , v_s_1d  (jpij) , v_il_1d (jpij) , & 
     214         &      h_il_1d (jpij) , h_ip_1d (jpij) , a_ip_frac_1d(jpij) ,                                  & 
    216215         &      sv_i_1d (jpij) , oa_i_1d (jpij) , o_i_1d    (jpij) , STAT=ierr(ii) ) 
    217216      ! 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icealb.F90

    r12720 r12725  
    9696      LOGICAL , INTENT(in   )                   ::   ld_pnd_alb   !  effect of melt ponds on albedo 
    9797      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pafrac_pnd   !  melt pond relative fraction (per unit ice area) 
    98                                                                   !  This is the effective fraction not covered up by a pond lid 
    9998      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   ph_pnd       !  melt pond depth 
    10099      REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   palb_cs      !  albedo of ice under clear    sky 
     
    120119         DO jj = 1, jpj 
    121120            DO ji = 1, jpi 
    122                !                       !--- Specific snow, ice and pond fractions (for now, we prevent melt ponds and snow at the same time) 
    123                IF( ph_snw(ji,jj,jl) == 0._wp ) THEN 
     121               !---------------------------------------------! 
     122               !--- Specific snow, ice and pond fractions ---! 
     123               !---------------------------------------------!                
     124               IF( ph_snw(ji,jj,jl) == 0._wp ) THEN   !--- no snow : we prevent melt ponds and snow at the same time (for now) 
    124125                  zafrac_snw = 0._wp 
    125126                  IF( ld_pnd_alb ) THEN 
     
    130131                  zafrac_ice = 1._wp - zafrac_pnd 
    131132               ELSE 
    132                   zafrac_snw = 1._wp      ! Snow fully "shades" melt ponds and ice 
     133                  zafrac_snw = 1._wp                  !--- snow : fully "shades" melt ponds and ice 
    133134                  zafrac_pnd = 0._wp 
    134135                  zafrac_ice = 0._wp 
    135136               ENDIF 
    136137               ! 
     138               !---------------! 
     139               !--- Albedos ---! 
     140               !---------------!                
    137141               !                       !--- Bare ice albedo (for hi > 150cm) 
    138142               IF( ld_pnd_alb ) THEN 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icectl.F90

    r12545 r12725  
    625625                  WRITE(numout,*) ' e_snow     : ', e_s(ji,jj,1,jl)            , ' e_snow_b   : ', e_s_b(ji,jj,1,jl)  
    626626                  WRITE(numout,*) ' sv_i       : ', sv_i(ji,jj,jl)             , ' sv_i_b     : ', sv_i_b(ji,jj,jl)    
    627                   WRITE(numout,*) ' oa_i       : ', oa_i(ji,jj,jl)             , ' oa_i_b     : ', oa_i_b(ji,jj,jl) 
    628627               END DO !jl 
    629628                
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/iceistate.F90

    r12720 r12725  
    377377 
    378378         ! Melt ponds 
    379          WHERE( a_i > epsi10 ) 
    380             a_ip_frac(:,:,:) = a_ip(:,:,:) / a_i(:,:,:) 
    381          ELSEWHERE 
    382             a_ip_frac(:,:,:) = 0._wp 
     379         WHERE( a_i > epsi10 )   ;   a_ip_frac(:,:,:) = a_ip(:,:,:) / a_i(:,:,:) 
     380         ELSEWHERE               ;   a_ip_frac(:,:,:) = 0._wp 
    383381         END WHERE 
    384382         a_ip_eff(:,:,:) = a_ip_frac(:,:,:) 
     
    456454      e_s_b  (:,:,:,:) = e_s  (:,:,:,:) 
    457455      sv_i_b (:,:,:)   = sv_i (:,:,:) 
    458       oa_i_b (:,:,:)   = oa_i (:,:,:) 
    459456      u_ice_b(:,:)     = u_ice(:,:) 
    460457      v_ice_b(:,:)     = v_ice(:,:) 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icerst.F90

    r12720 r12725  
    251251            v_ip(:,:,:) = 0._wp 
    252252         ENDIF 
    253          a_ip_eff(:,:,:) = a_ip(:,:,:) 
    254253         ! melt pond lids 
    255          id5 = iom_varid( numrir, 'v_il' , ldstop = .FALSE. ) 
    256          IF( id5 > 0 ) THEN 
     254         id3 = iom_varid( numrir, 'v_il' , ldstop = .FALSE. ) 
     255         IF( id3 > 0 ) THEN 
    257256            CALL iom_get( numrir, jpdom_autoglo, 'v_il', v_il) 
    258257         ELSE 
     
    262261         ! fields needed for Met Office (Jules) coupling 
    263262         IF( ln_cpl ) THEN 
    264             id3 = iom_varid( numrir, 'cnd_ice' , ldstop = .FALSE. ) 
    265             id4 = iom_varid( numrir, 't1_ice'  , ldstop = .FALSE. ) 
    266             IF( id3 > 0 .AND. id4 > 0 ) THEN         ! fields exist 
     263            id4 = iom_varid( numrir, 'cnd_ice' , ldstop = .FALSE. ) 
     264            id5 = iom_varid( numrir, 't1_ice'  , ldstop = .FALSE. ) 
     265            IF( id4 > 0 .AND. id5 > 0 ) THEN         ! fields exist 
    267266               CALL iom_get( numrir, jpdom_autoglo, 'cnd_ice', cnd_ice ) 
    268267               CALL iom_get( numrir, jpdom_autoglo, 't1_ice' , t1_ice  ) 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icestp.F90

    r11536 r12725  
    363363      v_s_b (:,:,:)   = v_s (:,:,:)     ! snow volume 
    364364      sv_i_b(:,:,:)   = sv_i(:,:,:)     ! salt content 
    365       oa_i_b(:,:,:)   = oa_i(:,:,:)     ! areal age content 
    366365      e_s_b (:,:,:,:) = e_s (:,:,:,:)   ! snow thermal energy 
    367366      e_i_b (:,:,:,:) = e_i (:,:,:,:)   ! ice thermal energy 
     
    372371         h_i_b(:,:,:) = 0._wp 
    373372         h_s_b(:,:,:) = 0._wp 
    374       END WHERE 
    375        
    376       WHERE( a_ip(:,:,:) >= epsi20 ) 
    377          h_ip_b(:,:,:) = v_ip(:,:,:) / a_ip(:,:,:)   ! ice pond thickness 
    378       ELSEWHERE 
    379          h_ip_b(:,:,:) = 0._wp 
    380373      END WHERE 
    381374      ! 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd.F90

    r12720 r12725  
    355355         CALL tab_2d_1d( npti, nptidx(1:npti), h_ip_1d     (1:npti), h_ip     (:,:,kl) ) 
    356356         CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_frac_1d(1:npti), a_ip_frac(:,:,kl) ) 
    357          CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_eff_1d (1:npti), a_ip_eff (:,:,kl) ) 
    358357         CALL tab_2d_1d( npti, nptidx(1:npti), h_il_1d     (1:npti), h_il     (:,:,kl) ) 
    359358         ! 
     
    464463         CALL tab_1d_2d( npti, nptidx(1:npti), h_ip_1d     (1:npti), h_ip     (:,:,kl) ) 
    465464         CALL tab_1d_2d( npti, nptidx(1:npti), a_ip_frac_1d(1:npti), a_ip_frac(:,:,kl) ) 
    466          CALL tab_1d_2d( npti, nptidx(1:npti), a_ip_eff_1d (1:npti), a_ip_eff (:,:,kl) ) 
    467465         CALL tab_1d_2d( npti, nptidx(1:npti), h_il_1d     (1:npti), h_il     (:,:,kl) ) 
    468466         ! 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_pnd.F90

    r12720 r12725  
    8989         IF( a_i_1d(ji) > 0._wp .AND. t_su_1d(ji) >= rt0 ) THEN 
    9090            a_ip_frac_1d(ji) = rn_apnd 
    91             a_ip_eff_1d(ji)  = rn_apnd 
    9291            h_ip_1d(ji)      = rn_hpnd     
    9392            a_ip_1d(ji)      = a_ip_frac_1d(ji) * a_i_1d(ji) 
     
    9594         ELSE 
    9695            a_ip_frac_1d(ji) = 0._wp 
    97             a_ip_eff_1d(ji)  = 0._wp 
    9896            h_ip_1d(ji)      = 0._wp     
    9997            a_ip_1d(ji)      = 0._wp 
     
    139137      !!                    if no lids:   Vp = Vp * exp(0.01*MAX(Tp-Tsu,0)/Tp)                      --- from Holland et al 2012 --- 
    140138      !! 
    141       !!              - Overflow:         w = -perm/visc * rho_oce * grav * Hp / Hi                 --- from Flocco et al 2007 --- 
     139      !!              - Flushing:         w = -perm/visc * rho_oce * grav * Hp / Hi                 --- from Flocco et al 2007 --- 
    142140      !!                                     perm = permability of sea-ice 
    143141      !!                                     visc = water viscosity 
     
    145143      !!                                     Hi   = ice thickness thru which there is flushing 
    146144      !! 
    147       !! 
    148145      !!              - Corrections:      remove melt ponds when lid thickness is 10 times the pond thickness 
    149       !! 
    150       !!              - effective pond area: to be used for albedo  
    151146      !! 
    152147      !!              - pond thickness and area is retrieved from pond volume assuming a linear relationship between h_ip and a_ip: 
     
    161156      !!                   Holland et al      (J. Clim, 2012) 
    162157      !!------------------------------------------------------------------- 
    163       REAL(wp), DIMENSION(nlay_i) ::   zperm          ! Permeability of sea ice 
     158      REAL(wp), DIMENSION(nlay_i) ::   ztmp           ! temporary array 
    164159      !! 
    165160      REAL(wp), PARAMETER ::   zaspect =  0.8_wp      ! pond aspect ratio 
    166161      REAL(wp), PARAMETER ::   zTp     = -2._wp       ! reference temperature 
    167162      REAL(wp), PARAMETER ::   zvisc   =  1.79e-3_wp  ! water viscosity 
    168       REAL(wp), PARAMETER ::   zhl_max =  0.015_wp    ! pond lid thickness above which the ponds disappear from the albedo calculation 
    169       REAL(wp), PARAMETER ::   zhl_min =  0.005_wp    ! pond lid thickness below which the full pond area is used in the albedo calculation 
    170163      !! 
    171164      REAL(wp) ::   zfr_mlt, zdv_mlt                  ! fraction and volume of available meltwater retained for melt ponding 
    172165      REAL(wp) ::   zdv_frz, zdv_flush                ! Amount of melt pond that freezes, flushes 
    173166      REAL(wp) ::   zhp                               ! heigh of top of pond lid wrt ssh 
    174       REAL(wp) ::   v_ip_max                          ! max pond volume allowed 
     167      REAL(wp) ::   zv_ip_max                         ! max pond volume allowed 
    175168      REAL(wp) ::   zdT                               ! zTp-t_su 
    176169      REAL(wp) ::   zsbr                              ! Brine salinity 
     170      REAL(wp) ::   zperm                             ! permeability of sea ice 
    177171      REAL(wp) ::   zfac, zdum                        ! temporary arrays 
    178172      REAL(wp) ::   z1_rhow, z1_aspect, z1_Tp         ! inverse 
     
    214208            !    a_ip_max = zfr_mlt * a_i 
    215209            !    => from zaspect = h_ip / (a_ip / a_i), set v_ip_max as:  
    216             v_ip_max = zfr_mlt**2 * a_i_1d(ji) * zaspect 
    217             zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, v_ip_max - v_ip_1d(ji) ) ) 
     210            zv_ip_max = zfr_mlt**2 * a_i_1d(ji) * zaspect 
     211            zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, zv_ip_max - v_ip_1d(ji) ) ) 
    218212 
    219213            ! If pond depth exceeds half the ice thickness then reduce the pond volume 
    220214            !    h_ip_max = 0.5 * h_i 
    221215            !    => from zaspect = h_ip / (a_ip / a_i), set v_ip_max as:  
    222             v_ip_max = z1_aspect * a_i_1d(ji) * 0.25 * h_i_1d(ji) * h_i_1d(ji) 
    223             zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, v_ip_max - v_ip_1d(ji) ) ) 
     216            zv_ip_max = z1_aspect * a_i_1d(ji) * 0.25 * h_i_1d(ji) * h_i_1d(ji) 
     217            zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, zv_ip_max - v_ip_1d(ji) ) ) 
    224218             
    225219            !--- Pond growing ---! 
     
    266260            ! v_ip     = h_ip * a_ip 
    267261            ! a_ip/a_i = a_ip_frac = h_ip / zaspect (cf Holland 2012, fitting SHEBA so that knowing v_ip we can distribute it to a_ip and h_ip) 
    268             a_ip_1d(ji)      = SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) 
     262            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 
    269263            a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 
    270264            h_ip_1d(ji)      = zaspect * a_ip_frac_1d(ji) 
     
    283277                     &   - 0.919_wp   * ( t_i_1d(ji,jk) - rt0 )**2 & 
    284278                     &   - 0.0178_wp  * ( t_i_1d(ji,jk) - rt0 )**3 ! clem: error here the factor was 0.01878 instead of 0.0178 (cf Flocco 2010) 
    285                   zperm(jk) = MAX( 0._wp, 3.e-08_wp * (sz_i_1d(ji,jk) / zsbr)**3 ) 
     279                  ztmp(jk) = sz_i_1d(ji,jk) / zsbr 
    286280               END DO 
     281               zperm = MAX( 0._wp, 3.e-08_wp * MINVAL(ztmp)**3 ) 
    287282 
    288283               ! Do the drainage using Darcy's law 
    289                zdv_flush   = -MINVAL(zperm(:)) * rau0 * grav * zhp * rdt_ice / (zvisc * h_i_1d(ji)) * a_ip_1d(ji) 
     284               zdv_flush   = -zperm * rau0 * grav * zhp * rdt_ice / (zvisc * h_i_1d(ji)) * a_ip_1d(ji) 
    290285               zdv_flush   = MAX( zdv_flush, -v_ip_1d(ji) ) 
    291286               v_ip_1d(ji) = v_ip_1d(ji) + zdv_flush 
    292287                
    293288               !--- Set new pond area and depth ---! assuming linear relation between h_ip and a_ip_frac 
    294                a_ip_1d(ji)      = SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) 
     289               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 
    295290               a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 
    296291               h_ip_1d(ji)      = zaspect * a_ip_frac_1d(ji) 
     
    300295            !--- Corrections and lid thickness ---! 
    301296            IF( ln_pnd_lids ) THEN 
     297               !--- retrieve lid thickness from volume ---! 
     298               IF( a_ip_1d(ji) > epsi10 ) THEN   ;   h_il_1d(ji) = v_il_1d(ji) / a_ip_1d(ji) 
     299               ELSE                              ;   h_il_1d(ji) = 0._wp 
     300               ENDIF 
    302301               !--- remove ponds if lids are much larger than ponds ---! 
    303                IF ( v_il_1d(ji) > v_ip_1d(ji) * 10._wp ) THEN 
     302               IF ( h_il_1d(ji) > h_ip_1d(ji) * 10._wp ) THEN 
    304303                  a_ip_1d(ji)      = 0._wp 
    305304                  a_ip_frac_1d(ji) = 0._wp 
    306305                  h_ip_1d(ji)      = 0._wp 
    307                   v_il_1d(ji)      = 0._wp 
    308                ENDIF 
    309                !--- retrieve lid thickness from volume ---! 
    310                IF( a_ip_1d(ji) > epsi10 ) THEN   ;   h_il_1d(ji) = v_il_1d(ji) / a_ip_1d(ji) 
    311                ELSE                              ;   h_il_1d(ji) = 0._wp ; 
     306                  h_il_1d(ji)      = 0._wp 
    312307               ENDIF 
    313308            ENDIF 
     
    316311          
    317312      END DO 
    318  
    319       !-------------------------------------------------!             
    320       ! How much melt pond is exposed to the atmosphere ! 
    321       !-------------------------------------------------!             
    322       ! Calculate the melt pond effective area (used for albedo) 
    323       WHERE    ( h_il_1d(1:npti) <= zhl_min )   ;   a_ip_eff_1d(1:npti) = a_ip_frac_1d(1:npti)       ! lid is very thin.  Expose all the pond 
    324       ELSEWHERE( h_il_1d(1:npti) >= zhl_max )   ;   a_ip_eff_1d(1:npti) = 0._wp                      ! lid is very thick. Cover all the pond up with ice and snow 
    325       ELSEWHERE                                 ;   a_ip_eff_1d(1:npti) = a_ip_frac_1d(1:npti) * &   ! lid is in between. Expose part of the pond 
    326          &                                                                ( h_il_1d(1:npti) - zhl_min ) / ( zhl_max - zhl_min ) 
    327       END WHERE 
    328313      ! 
    329314   END SUBROUTINE pnd_H12 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icevar.F90

    r12720 r12725  
    185185      REAL(wp) ::   zhmax, z1_zhmax                 !   -      - 
    186186      REAL(wp) ::   zlay_i, zlay_s                  !   -      - 
    187       REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z1_a_i, z1_v_i 
     187      REAL(wp), PARAMETER ::   zhl_max =  0.015_wp  ! pond lid thickness above which the ponds disappear from the albedo calculation 
     188      REAL(wp), PARAMETER ::   zhl_min =  0.005_wp  ! pond lid thickness below which the full pond area is used in the albedo calculation 
     189      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z1_a_i, z1_v_i, z1_a_ip 
    188190      !!------------------------------------------------------------------- 
    189191 
     
    204206      ELSEWHERE                      ;   z1_v_i(:,:,:) = 0._wp 
    205207      END WHERE 
     208      ! 
     209      WHERE( a_ip(:,:,:) > epsi20 )  ;   z1_a_ip(:,:,:) = 1._wp / a_ip(:,:,:) 
     210      ELSEWHERE                      ;   z1_a_ip(:,:,:) = 0._wp 
     211      END WHERE 
    206212      !                                           !--- ice thickness 
    207213      h_i(:,:,:) = v_i (:,:,:) * z1_a_i(:,:,:) 
     
    218224      !                                           !--- ice age       
    219225      o_i(:,:,:) = oa_i(:,:,:) * z1_a_i(:,:,:) 
    220       !                                           !--- pond fraction and thickness       
     226      !                                           !--- pond and lid thickness       
     227      h_ip(:,:,:) = v_ip(:,:,:) * z1_a_ip(:,:,:) 
     228      h_il(:,:,:) = v_il(:,:,:) * z1_a_ip(:,:,:) 
     229      !                                           !--- melt pond effective area (used for albedo) 
    221230      a_ip_frac(:,:,:) = a_ip(:,:,:) * z1_a_i(:,:,:) 
    222       WHERE( a_ip_frac(:,:,:) > epsi20 )   ;   h_ip(:,:,:) = v_ip(:,:,:) * z1_a_i(:,:,:) / a_ip_frac(:,:,:) 
    223       ELSEWHERE                            ;   h_ip(:,:,:) = 0._wp 
    224       END WHERE 
    225       !                                           !--- pond lid thickness       
    226       WHERE( a_ip_frac(:,:,:) > epsi20 )   ;   h_il(:,:,:) = v_il(:,:,:) * z1_a_i(:,:,:) / a_ip_frac(:,:,:) 
    227       ELSEWHERE                            ;   h_il(:,:,:) = 0._wp 
    228       END WHERE 
    229       ! 
     231      WHERE    ( h_il(:,:,:) <= zhl_min )  ;   a_ip_eff(:,:,:) = a_ip_frac(:,:,:)       ! lid is very thin.  Expose all the pond 
     232      ELSEWHERE( h_il(:,:,:) >= zhl_max )  ;   a_ip_eff(:,:,:) = 0._wp                  ! lid is very thick. Cover all the pond up with ice and snow 
     233      ELSEWHERE                            ;   a_ip_eff(:,:,:) = a_ip_frac(:,:,:) * &   ! lid is in between. Expose part of the pond 
     234         &                                                       ( h_il(:,:,:) - zhl_min ) / ( zhl_max - zhl_min ) 
     235      END WHERE 
    230236      !                                           !---  salinity (with a minimum value imposed everywhere)      
    231237      IF( nn_icesal == 2 ) THEN 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/SBC/sbccpl.F90

    r12288 r12725  
    23082308            SELECT CASE( sn_snd_mpnd%clcat )   
    23092309            CASE( 'yes' )   
    2310                ztmp3(:,:,1:jpl) =  a_ip_frac(:,:,1:jpl) 
     2310               ztmp3(:,:,1:jpl) =  a_ip_eff(:,:,1:jpl) 
    23112311               ztmp4(:,:,1:jpl) =  h_ip(:,:,1:jpl)   
    23122312            CASE( 'no' )   
     
    23142314               ztmp4(:,:,:) = 0.0   
    23152315               DO jl=1,jpl   
    2316                  ztmp3(:,:,1) = ztmp3(:,:,1) + a_ip_frac(:,:,jpl)   
     2316                 ztmp3(:,:,1) = ztmp3(:,:,1) + a_ip_eff(:,:,jpl)   
    23172317                 ztmp4(:,:,1) = ztmp4(:,:,1) + h_ip(:,:,jpl)  
    23182318               ENDDO   
Note: See TracChangeset for help on using the changeset viewer.