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 15574 for NEMO/branches/2021/dev_r14318_RK3_stage1/src/ICE/icealb.F90 – NEMO

Ignore:
Timestamp:
2021-12-03T20:32:50+01:00 (3 years ago)
Author:
techene
Message:

#2605 #2715 trunk merged into dev_r14318_RK3_stage1

Location:
NEMO/branches/2021/dev_r14318_RK3_stage1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14318_RK3_stage1

    • Property svn:externals
      •  

        old new  
        99 
        1010# SETTE 
        11 ^/utils/CI/sette@14244        sette 
         11^/utils/CI/sette@HEAD        sette 
         12 
  • NEMO/branches/2021/dev_r14318_RK3_stage1/src/ICE/icealb.F90

    r13472 r15574  
    3030   PUBLIC   ice_alb        ! called in icesbc.F90 and iceupdate.F90 
    3131 
    32    REAL(wp), PUBLIC, PARAMETER ::   rn_alb_oce = 0.066   !: ocean or lead albedo (Pegau and Paulson, Ann. Glac. 2001) 
     32   REAL(wp), PUBLIC, PARAMETER ::   rn_alb_oce = 0.066_wp   !: ocean or lead albedo (Pegau and Paulson, Ann. Glac. 2001) 
    3333   ! 
    3434   !                             !!* albedo namelist (namalb) 
     
    3838   REAL(wp) ::   rn_alb_imlt      ! bare puddled ice albedo 
    3939   REAL(wp) ::   rn_alb_dpnd      ! ponded ice albedo 
     40   REAL(wp) ::   rn_alb_hpiv      ! pivotal ice thickness in meters (above which albedo is constant) 
    4041 
    4142   !! * Substitutions 
     
    5960      !!                     which are an update of Allison et al. (JGR 1993) ; Brandt et al. 1999 
    6061      !!                     0-5cm  : linear function of ice thickness 
    61       !!                     5-150cm: log    function of ice thickness 
    62       !!                     > 150cm: constant 
     62      !!                     5-100cm: log    function of ice thickness 
     63      !!                     > 100cm: constant 
    6364      !!                  2) Albedo dependency on snow thickness follows the findings from Grenfell & Perovich (2004) 
    6465      !!                     i.e. it increases as -EXP(-snw_thick/0.02) during freezing and -EXP(-snw_thick/0.03) during melting 
     
    115116      IF( ln_timing )   CALL timing_start('icealb') 
    116117      ! 
    117       z1_href_pnd = 1. / 0.05 
    118       z1_c1 = 1. / ( LOG(1.5) - LOG(0.05) )  
    119       z1_c2 = 1. / 0.05 
    120       z1_c3 = 1. / 0.02 
    121       z1_c4 = 1. / 0.03 
     118      z1_href_pnd = 1._wp / 0.05_wp 
     119      z1_c1 = 1._wp / ( LOG(rn_alb_hpiv) - LOG(0.05_wp) )  
     120      z1_c2 = 1._wp / 0.05_wp 
     121      z1_c3 = 1._wp / 0.02_wp 
     122      z1_c4 = 1._wp / 0.03_wp 
    122123      ! 
    123124      CALL ice_var_snwfra( ph_snw, za_s_fra )   ! calculate ice fraction covered by snow 
    124125      ! 
    125126      DO jl = 1, jpl 
    126          DO_2D( 1, 1, 1, 1 ) 
     127         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )   ! palb_ice used over the full domain in icesbc 
    127128            ! 
    128129            !---------------------------------------------! 
     
    140141            !--- Albedos ---! 
    141142            !---------------!                
    142             !                       !--- Bare ice albedo (for hi > 150cm) 
     143            !                       !--- Bare ice albedo (for hi > 100cm) 
    143144            IF( ld_pnd_alb ) THEN 
    144145               zalb_ice = rn_alb_idry 
     
    147148               ELSE                                                                ;   zalb_ice = rn_alb_idry   ;   ENDIF 
    148149            ENDIF 
    149             !                       !--- Bare ice albedo (for hi < 150cm) 
    150             IF( 0.05 < ph_ice(ji,jj,jl) .AND. ph_ice(ji,jj,jl) <= 1.5 ) THEN      ! 5cm < hi < 150cm 
    151                zalb_ice = zalb_ice    + ( 0.18 - zalb_ice   ) * z1_c1 * ( LOG(1.5) - LOG(ph_ice(ji,jj,jl)) ) 
    152             ELSEIF( ph_ice(ji,jj,jl) <= 0.05 ) THEN                               ! 0cm < hi < 5cm 
    153                zalb_ice = rn_alb_oce  + ( 0.18 - rn_alb_oce ) * z1_c2 * ph_ice(ji,jj,jl) 
     150            !                       !--- Bare ice albedo (for hi < 100cm) 
     151            IF( 0.05 < ph_ice(ji,jj,jl) .AND. ph_ice(ji,jj,jl) <= rn_alb_hpiv ) THEN      ! 5cm < hi < 100cm 
     152               zalb_ice = zalb_ice    + ( 0.18_wp - zalb_ice   ) * z1_c1 * ( LOG(rn_alb_hpiv) - LOG(ph_ice(ji,jj,jl)) ) 
     153            ELSEIF( ph_ice(ji,jj,jl) <= 0.05_wp ) THEN                                    ! 0cm < hi < 5cm 
     154               zalb_ice = rn_alb_oce  + ( 0.18_wp - rn_alb_oce ) * z1_c2 * ph_ice(ji,jj,jl) 
    154155            ENDIF 
    155156            ! 
     
    166167            zalb_os = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) 
    167168            ! 
    168             zalb_cs = zalb_os - ( - 0.1010 * zalb_os * zalb_os  & 
    169                &                  + 0.1933 * zalb_os - 0.0148 ) * tmask(ji,jj,1) 
     169            zalb_cs = zalb_os - ( - 0.1010_wp * zalb_os * zalb_os  & 
     170               &                  + 0.1933_wp * zalb_os - 0.0148_wp ) * tmask(ji,jj,1) 
    170171            ! 
    171172            ! albedo depends on cloud fraction because of non-linear spectral effects 
     
    191192      INTEGER ::   ios   ! Local integer output status for namelist read 
    192193      !! 
    193       NAMELIST/namalb/ rn_alb_sdry, rn_alb_smlt, rn_alb_idry, rn_alb_imlt, rn_alb_dpnd 
     194      NAMELIST/namalb/ rn_alb_sdry, rn_alb_smlt, rn_alb_idry, rn_alb_imlt, rn_alb_dpnd, rn_alb_hpiv 
    194195      !!---------------------------------------------------------------------- 
    195196      ! 
     
    210211         WRITE(numout,*) '      albedo of bare puddled ice           rn_alb_imlt = ', rn_alb_imlt 
    211212         WRITE(numout,*) '      albedo of ponded ice                 rn_alb_dpnd = ', rn_alb_dpnd 
     213         WRITE(numout,*) '      pivotal ice thickness (m)            rn_alb_hpiv = ', rn_alb_hpiv 
    212214      ENDIF 
    213215      ! 
Note: See TracChangeset for help on using the changeset viewer.