- Timestamp:
- 2020-09-15T12:49:18+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icealb.F90
r13466 r13469 122 122 ! 123 123 DO jl = 1, jpl 124 DO jj = 1, jpj 125 DO ji = 1, jpi 126 ! 127 !---------------------------------------------! 128 !--- Specific snow, ice and pond fractions ---! 129 !---------------------------------------------! 130 zafrac_snw = za_s_fra(ji,jj,jl) 131 IF( ld_pnd_alb ) THEN 132 zafrac_pnd = MIN( pafrac_pnd(ji,jj,jl), 1._wp - zafrac_snw ) ! make sure (a_ip_eff + a_s_fra) <= 1 133 ELSE 134 zafrac_pnd = 0._wp 135 ENDIF 136 zafrac_ice = MAX( 0._wp, 1._wp - zafrac_pnd - zafrac_snw ) ! max for roundoff errors 137 ! 138 !---------------! 139 !--- Albedos ---! 140 !---------------! 141 ! !--- Bare ice albedo (for hi > 150cm) 142 IF( ld_pnd_alb ) THEN 143 zalb_ice = rn_alb_idry 144 ELSE 145 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt 146 ELSE ; zalb_ice = rn_alb_idry ; ENDIF 147 ENDIF 148 ! !--- Bare ice albedo (for hi < 150cm) 149 IF( 0.05 < ph_ice(ji,jj,jl) .AND. ph_ice(ji,jj,jl) <= 1.5 ) THEN ! 5cm < hi < 150cm 150 zalb_ice = zalb_ice + ( 0.18 - zalb_ice ) * z1_c1 * ( LOG(1.5) - LOG(ph_ice(ji,jj,jl)) ) 151 ELSEIF( ph_ice(ji,jj,jl) <= 0.05 ) THEN ! 0cm < hi < 5cm 152 zalb_ice = rn_alb_oce + ( 0.18 - rn_alb_oce ) * z1_c2 * ph_ice(ji,jj,jl) 153 ENDIF 154 ! 155 ! !--- Snow-covered ice albedo (freezing, melting cases) 156 IF( pt_su(ji,jj,jl) < rt0 ) THEN 157 zalb_snw = rn_alb_sdry - ( rn_alb_sdry - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c3 ) 158 ELSE 159 zalb_snw = rn_alb_smlt - ( rn_alb_smlt - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c4 ) 160 ENDIF 161 ! !--- Ponded ice albedo 162 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) 163 ! 164 ! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions 165 zalb_os = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) 166 ! 167 zalb_cs = zalb_os - ( - 0.1010 * zalb_os * zalb_os & 168 & + 0.1933 * zalb_os - 0.0148 ) * tmask(ji,jj,1) 169 ! 170 ! albedo depends on cloud fraction because of non-linear spectral effects 171 palb_ice(ji,jj,jl) = ( 1._wp - pcloud_fra(ji,jj) ) * zalb_cs + pcloud_fra(ji,jj) * zalb_os 172 173 END DO 174 END DO 124 DO_2D_11_11 125 ! 126 !---------------------------------------------! 127 !--- Specific snow, ice and pond fractions ---! 128 !---------------------------------------------! 129 zafrac_snw = za_s_fra(ji,jj,jl) 130 IF( ld_pnd_alb ) THEN 131 zafrac_pnd = MIN( pafrac_pnd(ji,jj,jl), 1._wp - zafrac_snw ) ! make sure (a_ip_eff + a_s_fra) <= 1 132 ELSE 133 zafrac_pnd = 0._wp 134 ENDIF 135 zafrac_ice = MAX( 0._wp, 1._wp - zafrac_pnd - zafrac_snw ) ! max for roundoff errors 136 ! 137 !---------------! 138 !--- Albedos ---! 139 !---------------! 140 ! !--- Bare ice albedo (for hi > 150cm) 141 IF( ld_pnd_alb ) THEN 142 zalb_ice = rn_alb_idry 143 ELSE 144 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt 145 ELSE ; zalb_ice = rn_alb_idry ; ENDIF 146 ENDIF 147 ! !--- Bare ice albedo (for hi < 150cm) 148 IF( 0.05 < ph_ice(ji,jj,jl) .AND. ph_ice(ji,jj,jl) <= 1.5 ) THEN ! 5cm < hi < 150cm 149 zalb_ice = zalb_ice + ( 0.18 - zalb_ice ) * z1_c1 * ( LOG(1.5) - LOG(ph_ice(ji,jj,jl)) ) 150 ELSEIF( ph_ice(ji,jj,jl) <= 0.05 ) THEN ! 0cm < hi < 5cm 151 zalb_ice = rn_alb_oce + ( 0.18 - rn_alb_oce ) * z1_c2 * ph_ice(ji,jj,jl) 152 ENDIF 153 ! 154 ! !--- Snow-covered ice albedo (freezing, melting cases) 155 IF( pt_su(ji,jj,jl) < rt0 ) THEN 156 zalb_snw = rn_alb_sdry - ( rn_alb_sdry - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c3 ) 157 ELSE 158 zalb_snw = rn_alb_smlt - ( rn_alb_smlt - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c4 ) 159 ENDIF 160 ! !--- Ponded ice albedo 161 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) 162 ! 163 ! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions 164 zalb_os = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) 165 ! 166 zalb_cs = zalb_os - ( - 0.1010 * zalb_os * zalb_os & 167 & + 0.1933 * zalb_os - 0.0148 ) * tmask(ji,jj,1) 168 ! 169 ! albedo depends on cloud fraction because of non-linear spectral effects 170 palb_ice(ji,jj,jl) = ( 1._wp - pcloud_fra(ji,jj) ) * zalb_cs + pcloud_fra(ji,jj) * zalb_os 171 172 END_2D 175 173 END DO 176 174 !
Note: See TracChangeset
for help on using the changeset viewer.