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

Changeset 8099


Ignore:
Timestamp:
2017-05-30T14:52:58+02:00 (7 years ago)
Author:
vancop
Message:

impact of melt ponds on albedo, first run

Location:
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r8098 r8099  
    282282   !                                     !!** melt pond namelist (namicemp) 
    283283   LOGICAL , PUBLIC ::   ln_pnd           !: activate ponds or not 
     284   LOGICAL , PUBLIC ::   ln_pnd_rad       !: ponds radiatively active or not 
    284285   INTEGER , PUBLIC ::   nn_pnd_scheme    !: type of melt pond scheme:   =0 prescribed, =1 empirical, =2 topographic 
    285286   INTEGER , PUBLIC ::   nn_pnd_cpl       !: type of melt pond coupling: =0 passive, =1 full, =2 radiation only, =3 freshwater only 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90

    r8098 r8099  
    9595      IF(lwm) WRITE ( numoni, namicemp ) 
    9696       
     97      ! Shortcut for radiatively active melt ponds 
     98      ln_pnd_rad = ln_pnd .AND. ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 2 ) ) 
     99 
    97100      IF(lwp) THEN                        ! control print 
    98101         WRITE(numout,*) 
     
    104107         WRITE(numout,*)'    Prescribed pond fraction                                    rn_apnd       = ', rn_apnd 
    105108         WRITE(numout,*)'    Prescribed pond depth                                       rn_hpnd       = ', rn_hpnd 
     109         WRITE(numout,*)'    Melt ponds radiatively active                               ln_pnd_rad    = ', ln_pnd_rad 
    106110      ENDIF 
    107111 
    108112      IF ( .NOT. ln_pnd ) THEN 
     113         WRITE(numout,*) 
    109114         WRITE(numout,*) ' Melt ponds are not activated ' 
    110115         WRITE(numout,*) ' nn_pnd_scheme, nn_pnd_cpl, rn_apnd and rn_hpnd are set to zero ' 
     
    114119         rn_hpnd       = 0._wp 
    115120      ENDIF 
     121 
    116122 
    117123      ! 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r6994 r8099  
    209209      !------------------------------------------------------------------------! 
    210210      CALL wrk_alloc( jpi, jpj, jpl, zalb_cs, zalb_os )     
    211       CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os )  ! cloud-sky and overcast-sky ice albedos 
     211      ! MV PND CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os )  ! cloud-sky and overcast-sky ice albedos 
     212      CALL albedo_ice( t_su, ht_i, a_i, ht_s, a_ip, v_ip, zalb_cs, zalb_os, ln_pnd_rad ) ! cloud-sky and overcast-sky ice albedos 
     213 
    212214      alb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
    213215      CALL wrk_dealloc( jpi, jpj, jpl, zalb_cs, zalb_os ) 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90

    r6323 r8099  
    3939   !                             !!* namelist namsbc_alb 
    4040   INTEGER  ::   nn_ice_alb 
    41    REAL(wp) ::   rn_albice 
     41   REAL(wp) ::   rn_alb_sdry, rn_alb_smlt, rn_alb_idry, rn_alb_imlt, rn_alb_dpnd 
    4242 
    4343   !!---------------------------------------------------------------------- 
     
    4848CONTAINS 
    4949 
    50    SUBROUTINE albedo_ice( pt_ice, ph_ice, ph_snw, pa_ice_cs, pa_ice_os ) 
     50   ! MV MP 2016 
     51   ! SUBROUTINE albedo_ice( pt_ice, ph_ice, ph_snw, pa_ice_cs, pa_ice_os ) 
     52   SUBROUTINE albedo_ice( pt_ice, ph_ice, pa_ice, ph_snw, pa_pnd, pv_pnd, pa_ice_cs, pa_ice_os, ld_pnd ) 
    5153      !!---------------------------------------------------------------------- 
    5254      !!               ***  ROUTINE albedo_ice  *** 
     
    8385      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pt_ice      !  ice surface temperature (Kelvin) 
    8486      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   ph_ice      !  sea-ice thickness 
    85       REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   ph_snw      !  snow thickness 
     87      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   ph_snw      !  snow depth 
     88      ! MV MP 2016 
     89      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pa_ice      !  ice fraction 
     90      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pa_pnd      !  melt pond fraction 
     91      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pv_pnd      !  melt pond volume 
     92      LOGICAL , INTENT(in   )                   ::   ld_pnd      !  melt ponds radiatively active  
     93      ! END MV MP 2016 
    8694      REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   pa_ice_cs   !  albedo of ice under clear    sky 
    8795      REAL(wp), INTENT(  out), DIMENSION(:,:,:) ::   pa_ice_os   !  albedo of ice under overcast sky 
     
    8997      INTEGER  ::   ji, jj, jl         ! dummy loop indices 
    9098      INTEGER  ::   ijpl               ! number of ice categories (3rd dim of ice input arrays) 
    91       REAL(wp)            ::   ralb_im, ralb_sf, ralb_sm, ralb_if 
    92       REAL(wp)            ::   zswitch, z1_c1, z1_c2 
     99      REAL(wp)                            ::   ralb_im, ralb_sf, ralb_sm, ralb_if, ralb_dp ! MV MP 2016 
     100      REAL(wp)                            ::   zswitch, z1_c1, z1_c2 
     101      REAL(wp)                            ::   zhref_pnd                                   ! MV MP 2016 
    93102      REAL(wp)                            ::   zalb_sm, zalb_sf, zalb_st ! albedo of snow melting, freezing, total 
    94103      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalb_it             ! intermediate variable & albedo of ice (snow free) 
     104      ! MV MP 2016 
     105      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zafrac_pnd, zh_pnd        ! melt pond fraction and thickness 
     106      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb_pnd                  ! ponded sea ice albedo 
     107      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb_ice                  ! bare sea ice albedo 
     108      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb_snw                  ! snow-covered sea ice albedo 
     109      ! END MV MP 2016 
    95110      !!--------------------------------------------------------------------- 
     111      ! TO DO 
     112      ! Update namelist  
     113      ! V Change the reference for rn_albice - should be bare ice with no puddles!!! 
     114      ! ... add 3rd computation 
     115 
    96116 
    97117      ijpl = SIZE( pt_ice, 3 )                     ! number of ice categories 
    98118       
    99119      CALL wrk_alloc( jpi,jpj,ijpl, zalb, zalb_it ) 
     120      CALL wrk_alloc( jpi,jpj,ijpl, zafrac_pnd, zh_pnd, zalb_pnd ) 
    100121 
    101122      IF( albd_init == 0 )   CALL albedo_init      ! initialization  
    102123 
     124      ralb_sf = rn_alb_sdry ! dry snow 
     125      ralb_sm = rn_alb_smlt ! melting snow 
     126      ralb_if = rn_alb_idry ! bare frozen ice 
     127      ralb_im = rn_alb_imlt ! bare puddled ice  
     128      ralb_dp = rn_alb_dpnd ! deep pond albedo   ! MV MP 2016 
    103129       
     130      ! MV MP 2016 
     131      !------------------------------------------------ 
     132      !  Pond fraction and thickness, snow-free albedo 
     133      !------------------------------------------------ 
     134      ! If melt ponds are radiatively active ( ld_pnd = .TRUE. ) 
     135      ! Then - melt pond fraction and thickness are assumed non-zero in the albedo computation  
     136      !      - the snow-free albedo is the weighted mean of bare ice (ralb_if) and ponded-ice albedos (zalb_pnd) 
     137 
     138      ! Otherwise, we just specify the bare ice albedo 
     139      ! for cold ice and melting ice, the latter implicitly assuming a specified fraction of melt ponds 
     140 
     141      IF ( ld_pnd ) THEN 
     142 
     143         ! ponded ice fraction and thickness 
     144         WHERE ( pa_ice > 1.e-10_wp ) ;   zafrac_pnd = pa_pnd / pa_ice ;   zh_pnd = pv_pnd / pa_ice 
     145         ELSE WHERE                   ;   zafrac_pnd = 0._wp           ;   zh_pnd = 0._wp  
     146         END WHERE 
     147           
     148         ! ponded ice albedo, including thickness dependence: 
     149         zhref_pnd = 0.05         ! characteristic length scale for albedo dependence of ponded ice, Lecomte et al (2015) 
     150         zalb_pnd  = ralb_dp - ( ralb_dp - ralb_if ) * EXP( - zh_pnd / zhref_pnd ) 
     151 
     152         ! weighted bare / ponded ice albedo (no ice thickness correction) 
     153         WHERE     ( ph_snw == 0._wp )  ;   zalb = ralb_if * ( 1. - zafrac_pnd ) + zalb_pnd * zafrac_pnd 
     154         END  WHERE 
     155 
     156      ELSE ! No melt ponds or radiatively inactive 
     157       
     158         ! ponded ice fraction and thickness 
     159         zafrac_pnd = 0._wp 
     160         zh_pnd     = 0._wp 
     161 
     162         ! snow-free ice albedo 
     163         WHERE     ( ph_snw == 0._wp .AND. pt_ice >= rt0_ice )   ;   zalb = ralb_im    ! prescribed bare ice albedo with assumed contribution of melt ponds 
     164         ELSE WHERE                                              ;   zalb = ralb_if 
     165         END  WHERE 
     166 
     167      ENDIF 
     168 
     169      ! END MV MP 2016 
     170 
    104171      SELECT CASE ( nn_ice_alb ) 
    105172 
     
    109176      CASE( 0 ) 
    110177        
    111          ralb_sf = 0.80       ! dry snow 
    112          ralb_sm = 0.65       ! melting snow 
    113          ralb_if = 0.72       ! bare frozen ice 
    114          ralb_im = rn_albice  ! bare puddled ice  
     178         ! Reference (clear sky) values 
     179         !ralb_sf = 0.80       ! dry snow 
     180         !ralb_sm = 0.65       ! melting snow 
     181         !ralb_if = 0.72       ! bare frozen ice 
     182         !ralb_im = rn_albice  ! bare ice  
     183         !ralb_dp = 0.30       ! deep ponded ice albedo, clear sky value, Lecomte et al (2015) MV MP 2016 
     184         !                     ! early melt ponds 0.24, late melt ponds 0.13 Grenfell & Perovich (2004) 
    115185          
    116          !  Computation of ice albedo (free of snow) 
    117          WHERE     ( ph_snw == 0._wp .AND. pt_ice >= rt0_ice )   ;   zalb(:,:,:) = ralb_im 
    118          ELSE WHERE                                              ;   zalb(:,:,:) = ralb_if 
    119          END  WHERE 
    120        
    121186         WHERE     ( 1.5  < ph_ice                     )  ;  zalb_it = zalb 
    122187         ELSE WHERE( 1.0  < ph_ice .AND. ph_ice <= 1.5 )  ;  zalb_it = 0.472  + 2.0 * ( zalb - 0.472 ) * ( ph_ice - 1.0 ) 
     
    148213                  zalb_st  =  zswitch * zalb_sm + ( 1._wp - zswitch ) * zalb_sf 
    149214                
    150                   ! Ice/snow albedo 
    151                   zswitch   = 1._wp - MAX( 0._wp , SIGN( 1._wp , - ph_snw(ji,jj,jl) ) ) 
    152                   pa_ice_cs(ji,jj,jl) =  zswitch * zalb_st + ( 1._wp - zswitch ) * zalb_it(ji,jj,jl) 
    153                   ! 
     215                  ! surface albedo 
     216                  zswitch             = 1._wp - MAX( 0._wp , SIGN( 1._wp , - ph_snw(ji,jj,jl) ) ) 
     217                  pa_ice_cs(ji,jj,jl) = zswitch * zalb_st + ( 1._wp - zswitch ) * zalb_it(ji,jj,jl) 
     218 
    154219               END DO 
    155220            END DO 
     
    163228      CASE( 1 )  
    164229 
    165          ralb_im = rn_albice  ! bare puddled ice 
     230!         ! Reference (overcast sky) values 
     231!       ralb_im = rn_albice  ! bare ice 
    166232! compilation of values from literature 
    167          ralb_sf = 0.85      ! dry snow 
    168          ralb_sm = 0.75      ! melting snow 
    169          ralb_if = 0.60      ! bare frozen ice 
     233!        ralb_sf = 0.85      ! dry snow 
     234!        ralb_sm = 0.75      ! melting snow 
     235!        ralb_if = 0.60      ! bare frozen ice 
     236!        ralb_dp = 0.36      ! ponded-ice overcast albedo (Lecomte et al, 2015) 
     237!                            ! early melt pnds 0.27, late melt ponds 0.14 Grenfell & Perovich 
    170238! Perovich et al 2002 (Sheba) => the only dataset for which all types of ice/snow were retrieved 
    171239!         ralb_sf = 0.85       ! dry snow 
     
    177245!         ralb_if = 0.54      ! bare frozen ice 
    178246!  
    179          !  Computation of ice albedo (free of snow) 
     247         ! Computation of ice albedo (free of snow) 
    180248         z1_c1 = 1. / ( LOG(1.5) - LOG(0.05) )  
    181249         z1_c2 = 1. / 0.05 
    182          WHERE     ( ph_snw == 0._wp .AND. pt_ice >= rt0_ice )   ;   zalb = ralb_im 
    183          ELSE WHERE                                              ;   zalb = ralb_if 
    184          END  WHERE 
    185           
     250 
     251         ! Accounting for the ice-thickness dependency (this has not been carefully checked with melt ponds) 
    186252         WHERE     ( 1.5  < ph_ice                     )  ;  zalb_it = zalb 
    187253         ELSE WHERE( 0.05 < ph_ice .AND. ph_ice <= 1.5 )  ;  zalb_it = zalb     + ( 0.18 - zalb     ) * z1_c1 *  & 
     
    192258         z1_c1 = 1. / 0.02 
    193259         z1_c2 = 1. / 0.03 
    194          !  Computation of the snow/ice albedo 
     260          
     261         ! Surface albedo (accounting for snow, ice melt ponds), overcast skies 
    195262         DO jl = 1, ijpl 
    196263            DO jj = 1, jpj 
    197264               DO ji = 1, jpi 
     265 
    198266                  zalb_sf = ralb_sf - ( ralb_sf - zalb_it(ji,jj,jl)) * EXP( - ph_snw(ji,jj,jl) * z1_c1 ); 
    199267                  zalb_sm = ralb_sm - ( ralb_sm - zalb_it(ji,jj,jl)) * EXP( - ph_snw(ji,jj,jl) * z1_c2 ); 
     
    205273                  ! Ice/snow albedo    
    206274                  zswitch             = MAX( 0._wp , SIGN( 1._wp , - ph_snw(ji,jj,jl) ) ) 
    207                   pa_ice_os(ji,jj,jl) = ( 1._wp - zswitch ) * zalb_st + zswitch *  zalb_it(ji,jj,jl) 
     275                  pa_ice_os(ji,jj,jl) = ( 1._wp - zswitch ) * zalb_st + zswitch *  zalb_it(ji,jj,jl)  
    208276 
    209277              END DO 
    210278            END DO 
    211279         END DO 
    212          ! Effect of the clouds (2d order polynomial) 
     280 
     281         ! Clear sky albedo 
    213282         pa_ice_cs = pa_ice_os - ( - 0.1010 * pa_ice_os * pa_ice_os + 0.1933 * pa_ice_os - 0.0148 );  
     283 
     284!     !------------------------------------------ 
     285!     !  Surface-based parameterization (2017) 
     286!     !------------------------------------------ 
     287!      CASE( 2 )  
     288! 
     289!         !----------------------------------------- 
     290!         ! Snow, bare ice and ponded ice fractions  
     291!         !----------------------------------------- 
     292!         ! Specific fractions (zafrac) refer to relative area covered by snow within each ice category 
     293! 
     294!         !--- Snow (for now, prescribed) 
     295!         WHERE     ( pa_ice > epsi10 .OR. ph_snw <= epsi06 )  ;  zafrac_snw = 0. 
     296!         ELSE WHERE                                           ;  zafrac_snw = 1. 
     297!         END WHERE 
     298! 
     299!         !--- Melt ponds  
     300!         ! for now, done at the beginning 
     301! 
     302!         !--- Ice 
     303!         WHERE     ( pa_ice > epsi10 )   ;  zafrac_ice = 1. - zafrac_snw - zafrac_pnd 
     304!         ELSE WHERE                      ;  zafrac_ice = 0. 
     305!         ENDWHERE 
     306! 
     307!         !-------------------------------------------------- 
     308!         ! Snow-covered, pond-covered, and bare ice albedos 
     309!         !-------------------------------------------------- 
     310!         ! zalb_snw, zalb_pnd, zalb_ice 
     311!         k 
     312! 
     313! 
     314!          
     315! 
     316!           
     317! 
     318! 
     319! 
     320!      ENDch grid cell has specific fractions of snow, ponds and ice 
     321!      ãs = 1 if hs > 0; 0 otherwise 
     322!      ãp = a_pnd / a_i 
     323!      ãi = ( 1 - ãs - ãp )  
     324!       
     325!      2) Compute albedo for each of the three surface types 
     326!      αi = f(hi,Tsu) 
     327!      αs = f(hi, hs, Tsu) 
     328!      αp = f(hp, hi?, Tsu?) 
     329!       
     330!      3) Surface albedo = weighted mean 
     331!       
     332!      α = αs * ãs + αp * ãp + αi * ( 1 - ãs - ãp)  
    214333 
    215334      END SELECT 
    216335       
    217336      CALL wrk_dealloc( jpi,jpj,ijpl, zalb, zalb_it ) 
     337      CALL wrk_dealloc( jpi,jpj,ijpl, zafrac_pnd, zh_pnd ) ! MV MP 2016 
    218338      ! 
    219339   END SUBROUTINE albedo_ice 
     
    248368      !!---------------------------------------------------------------------- 
    249369      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    250       NAMELIST/namsbc_alb/ nn_ice_alb, rn_albice  
     370      NAMELIST/namsbc_alb/ nn_ice_alb, rn_alb_sdry, rn_alb_smlt, rn_alb_idry , rn_alb_imlt, rn_alb_dpnd 
    251371      !!---------------------------------------------------------------------- 
    252372      ! 
     
    268388         WRITE(numout,*) '   Namelist namsbc_alb : albedo ' 
    269389         WRITE(numout,*) '      choose the albedo parameterization                  nn_ice_alb = ', nn_ice_alb 
    270          WRITE(numout,*) '      albedo of bare puddled ice                          rn_albice  = ', rn_albice 
     390         WRITE(numout,*) '      albedo of dry snow                                  rn_alb_sdry = ', rn_alb_sdry 
     391         WRITE(numout,*) '      albedo of melting snow                              rn_alb_smlt = ', rn_alb_smlt 
     392         WRITE(numout,*) '      albedo of dry ice                                   rn_alb_idry = ', rn_alb_idry 
     393         WRITE(numout,*) '      albedo of bare ice                                  rn_alb_imlt = ', rn_alb_imlt 
     394         WRITE(numout,*) '      albedo of ponded ice                                rn_alb_dpnd = ', rn_alb_dpnd 
    271395      ENDIF 
    272396      ! 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r8085 r8099  
    226226         CALL wrk_alloc( jpi,jpj,jpl, zalb_os, zalb_cs ) 
    227227          
    228                                       CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos 
     228                                      !CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos 
     229                                      CALL albedo_ice( t_su, ht_i, a_i, ht_s, a_ip, v_ip, zalb_cs, zalb_os, ln_pnd_rad ) ! cloud-sky and overcast-sky ice albedos 
     230 
    229231         SELECT CASE( kblk ) 
    230232 
Note: See TracChangeset for help on using the changeset viewer.