- Timestamp:
- 2020-11-16T11:20:33+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r13333_TOP-05_Ethe_Agrif
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13333_TOP-05_Ethe_Agrif
- Property svn:externals
-
old new 8 8 9 9 # SETTE 10 ^/utils/CI/sette@13 292sette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r13333_TOP-05_Ethe_Agrif/src/ICE/icealb.F90
r13295 r13798 14 14 !! ice_alb_init : initialisation of albedo computation 15 15 !!---------------------------------------------------------------------- 16 USE ice, ONLY: jpl ! sea-ice: number of categories17 16 USE phycst ! physical constants 18 17 USE dom_oce ! domain: ocean 18 USE ice, ONLY: jpl ! sea-ice: number of categories 19 USE icevar ! sea-ice: operations 19 20 ! 20 21 USE in_out_manager ! I/O manager … … 47 48 CONTAINS 48 49 49 SUBROUTINE ice_alb( pt_su, ph_ice, ph_snw, ld_pnd_alb, pafrac_pnd, ph_pnd, p alb_cs, palb_os)50 SUBROUTINE ice_alb( pt_su, ph_ice, ph_snw, ld_pnd_alb, pafrac_pnd, ph_pnd, pcloud_fra, palb_ice ) 50 51 !!---------------------------------------------------------------------- 51 52 !! *** ROUTINE ice_alb *** … … 99 100 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pafrac_pnd ! melt pond relative fraction (per unit ice area) 100 101 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: ph_pnd ! melt pond depth 101 REAL(wp), INTENT( out), DIMENSION(:,:,:) :: palb_cs ! albedo of ice under clear sky 102 REAL(wp), INTENT( out), DIMENSION(:,:,:) :: palb_os ! albedo of ice under overcast sky 103 ! 102 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pcloud_fra ! cloud fraction 103 REAL(wp), INTENT( out), DIMENSION(:,:,:) :: palb_ice ! albedo of ice 104 ! 105 REAL(wp), DIMENSION(jpi,jpj,jpl) :: za_s_fra ! ice fraction covered by snow 104 106 INTEGER :: ji, jj, jl ! dummy loop indices 105 107 REAL(wp) :: z1_c1, z1_c2,z1_c3, z1_c4 ! local scalar … … 108 110 REAL(wp) :: zalb_ice, zafrac_ice ! bare sea ice albedo & relative ice fraction 109 111 REAL(wp) :: zalb_snw, zafrac_snw ! snow-covered sea ice albedo & relative snow fraction 112 REAL(wp) :: zalb_cs, zalb_os ! albedo of ice under clear/overcast sky 110 113 !!--------------------------------------------------------------------- 111 114 ! … … 118 121 z1_c4 = 1. / 0.03 119 122 ! 123 CALL ice_var_snwfra( ph_snw, za_s_fra ) ! calculate ice fraction covered by snow 124 ! 120 125 DO jl = 1, jpl 121 126 DO_2D( 1, 1, 1, 1 ) 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 124 zafrac_snw = 0._wp 125 IF( ld_pnd_alb ) THEN 126 zafrac_pnd = pafrac_pnd(ji,jj,jl) 127 ELSE 128 zafrac_pnd = 0._wp 129 ENDIF 130 zafrac_ice = 1._wp - zafrac_pnd 127 ! 128 !---------------------------------------------! 129 !--- Specific snow, ice and pond fractions ---! 130 !---------------------------------------------! 131 zafrac_snw = za_s_fra(ji,jj,jl) 132 IF( ld_pnd_alb ) THEN 133 zafrac_pnd = MIN( pafrac_pnd(ji,jj,jl), 1._wp - zafrac_snw ) ! make sure (a_ip_eff + a_s_fra) <= 1 131 134 ELSE 132 zafrac_snw = 1._wp ! Snow fully "shades" melt ponds and ice133 135 zafrac_pnd = 0._wp 134 zafrac_ice = 0._wp 135 ENDIF 136 ! 136 ENDIF 137 zafrac_ice = MAX( 0._wp, 1._wp - zafrac_pnd - zafrac_snw ) ! max for roundoff errors 138 ! 139 !---------------! 140 !--- Albedos ---! 141 !---------------! 137 142 ! !--- Bare ice albedo (for hi > 150cm) 138 143 IF( ld_pnd_alb ) THEN 139 144 zalb_ice = rn_alb_idry 140 145 ELSE 141 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt142 ELSE ; zalb_ice = rn_alb_idry ; ENDIF146 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt 147 ELSE ; zalb_ice = rn_alb_idry ; ENDIF 143 148 ENDIF 144 149 ! !--- Bare ice albedo (for hi < 150cm) … … 156 161 ENDIF 157 162 ! !--- Ponded ice albedo 158 IF( ld_pnd_alb ) THEN 159 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) 160 ELSE 161 zalb_pnd = rn_alb_dpnd 162 ENDIF 163 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) 164 ! 163 165 ! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions 164 palb_os(ji,jj,jl) = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) 165 ! 166 palb_cs(ji,jj,jl) = palb_os(ji,jj,jl) & 167 & - ( - 0.1010 * palb_os(ji,jj,jl) * palb_os(ji,jj,jl) & 168 & + 0.1933 * palb_os(ji,jj,jl) - 0.0148 ) * tmask(ji,jj,1) 169 ! 166 zalb_os = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) 167 ! 168 zalb_cs = zalb_os - ( - 0.1010 * zalb_os * zalb_os & 169 & + 0.1933 * zalb_os - 0.0148 ) * tmask(ji,jj,1) 170 ! 171 ! albedo depends on cloud fraction because of non-linear spectral effects 172 palb_ice(ji,jj,jl) = ( 1._wp - pcloud_fra(ji,jj) ) * zalb_cs + pcloud_fra(ji,jj) * zalb_os 173 170 174 END_2D 171 175 END DO
Note: See TracChangeset
for help on using the changeset viewer.