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 6323 for branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90 – NEMO

Ignore:
Timestamp:
2016-02-18T09:20:22+01:00 (8 years ago)
Author:
cetlod
Message:

3.6 stable : keep exactly the same albedo old scheme, see ticket #1678

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90

    r6316 r6323  
    3030 
    3131   INTEGER  ::   albd_init = 0      !: control flag for initialization 
    32     
     32   
     33   REAL(wp) ::   rmue     = 0.40    !  cosine of local solar altitude 
     34   REAL(wp) ::   ralb_oce = 0.066   ! ocean or lead albedo (Pegau and Paulson, Ann. Glac. 2001) 
     35   REAL(wp) ::   c1       = 0.05    ! snow thickness (only for nn_ice_alb=0) 
     36   REAL(wp) ::   c2       = 0.10    !  "        " 
     37   REAL(wp) ::   rcloud   = 0.06    ! cloud effect on albedo (only-for nn_ice_alb=0) 
     38  
    3339   !                             !!* namelist namsbc_alb 
    3440   INTEGER  ::   nn_ice_alb 
     
    8389      INTEGER  ::   ji, jj, jl         ! dummy loop indices 
    8490      INTEGER  ::   ijpl               ! number of ice categories (3rd dim of ice input arrays) 
    85       REAL(wp), PARAMETER ::   ralb_oce = 0.066   ! ocean or lead albedo (Pegau and Paulson, Ann. Glac. 2001) 
    86       REAL(wp), PARAMETER ::   c1       = 0.05    ! snow thickness (only for nn_ice_alb=0) 
    87       REAL(wp), PARAMETER ::   c2       = 0.10    !  "        " 
    88       REAL(wp), PARAMETER ::   rcloud   = 0.06    ! cloud effect on albedo (only for nn_ice_alb=0) 
    8991      REAL(wp)            ::   ralb_im, ralb_sf, ralb_sm, ralb_if 
    9092      REAL(wp)            ::   zswitch, z1_c1, z1_c2 
     
    125127         END WHERE 
    126128      
    127          z1_c1 = 1. / c1 
    128          z1_c2 = 1. / c2 
    129          !  Computation of the snow/ice albedo  
    130129         DO jl = 1, ijpl 
    131130            DO jj = 1, jpj 
     
    133132                  ! freezing snow 
    134133                  ! no effect of underlying ice layer IF snow thickness > c1. Albedo does not depend on snow thick if > c2 
    135                   zswitch = MAX( 0._wp , SIGN( 1._wp , ph_snw(ji,jj,jl) - c1 ) ) 
    136                   zalb_sf = ( 1._wp - zswitch ) * ( zalb_it(ji,jj,jl) + ph_snw(ji,jj,jl) & 
    137                      &                          * ( ralb_sf - zalb_it(ji,jj,jl) ) * z1_c1 )  & 
    138                      &     +          zswitch   * ralb_sf   
    139                    
     134                  !                                        !  freezing snow         
     135                  zswitch   = 1._wp - MAX( 0._wp , SIGN( 1._wp , - ( ph_snw(ji,jj,jl) - c1 ) ) ) 
     136                  zalb_sf   = ( 1._wp - zswitch ) * (  zalb_it(ji,jj,jl)  & 
     137                     &                           + ph_snw(ji,jj,jl) * ( ralb_sf - zalb_it(ji,jj,jl) ) / c1  )   & 
     138                     &        +         zswitch   * ralb_sf   
     139 
    140140                  ! melting snow 
    141                   ! no effect of underlying ice layer. Albedo does not depend on snow thick IF > c2     
    142                   zswitch = MAX( 0._wp , SIGN( 1._wp , ph_snw(ji,jj,jl) - c2 ) ) 
    143                   zalb_sm = ( 1._wp - zswitch ) * ( ralb_im + ph_snw(ji,jj,jl) & 
    144                      &                          * ( ralb_sm - ralb_im ) * z1_c2 )   & 
    145                      &     +          zswitch   *   ralb_sm  
    146                    
     141                  ! no effect of underlying ice layer. Albedo does not depend on snow thick IF > c2 
     142                  zswitch   = MAX( 0._wp , SIGN( 1._wp , ph_snw(ji,jj,jl) - c2 ) ) 
     143                  zalb_sm = ( 1._wp - zswitch ) * ( ralb_im + ph_snw(ji,jj,jl) * ( ralb_sm - ralb_im ) / c2 )   & 
     144                      &     +         zswitch   *   ralb_sm  
     145                  ! 
    147146                  ! snow albedo 
    148                   zswitch = MAX( 0._wp , SIGN( 1._wp , pt_ice(ji,jj,jl) - rt0_snow ) )    
    149                   zalb_st = zswitch * zalb_sm + ( 1.0 - zswitch ) * zalb_sf 
    150                    
    151                   ! Ice/snow albedo    
    152                   zswitch             = MAX( 0._wp , SIGN( 1._wp , - ph_snw(ji,jj,jl) ) ) 
    153                   pa_ice_cs(ji,jj,jl) = ( 1._wp - zswitch ) * zalb_st + zswitch *  zalb_it(ji,jj,jl) 
     147                  zswitch  =  MAX( 0._wp , SIGN( 1._wp , pt_ice(ji,jj,jl) - rt0_snow ) )    
     148                  zalb_st  =  zswitch * zalb_sm + ( 1._wp - zswitch ) * zalb_sf 
     149                
     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                  ! 
    154154               END DO 
    155155            END DO 
    156156         END DO 
     157 
    157158         pa_ice_os(:,:,:) = pa_ice_cs(:,:,:) + rcloud       ! Oberhuber correction for overcast sky 
    158159 
     
    228229      REAL(wp), DIMENSION(:,:), INTENT(out) ::   pa_oce_cs   !  albedo of ocean under clear sky 
    229230      !! 
    230       REAL(wp) ::   rmue   = 0.40    !  cosine of local solar altitude 
    231       !!---------------------------------------------------------------------- 
    232       ! 
    233       pa_oce_cs(:,:) = 0.05 / ( 1.1 * rmue**1.4 + 0.15 )   ! Parameterization of Briegled and Ramanathan, 1982               
    234       pa_oce_os(:,:) = 0.06                                ! Parameterization of Kondratyev, 1969 and Payne, 1972 
     231      REAL(wp) :: zcoef  
     232      !!---------------------------------------------------------------------- 
     233      ! 
     234      zcoef = 0.05 / ( 1.1 * rmue**1.4 + 0.15 )   ! Parameterization of Briegled and Ramanathan, 1982 
     235      pa_oce_cs(:,:) = zcoef  
     236      pa_oce_os(:,:) = 0.06                       ! Parameterization of Kondratyev, 1969 and Payne, 1972 
    235237      ! 
    236238   END SUBROUTINE albedo_oce 
Note: See TracChangeset for help on using the changeset viewer.