- Timestamp:
- 2017-09-05T19:53:41+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icealb.F90
r8486 r8498 27 27 REAL(wp), PUBLIC, PARAMETER :: rn_alb_oce = 0.066 !: ocean or lead albedo (Pegau and Paulson, Ann. Glac. 2001) 28 28 29 !!gm real variable name starting with a "c" NOT DOCTOR !!!!30 29 INTEGER :: albd_init = 0 ! control flag for initialization 31 REAL(wp) , PARAMETER :: c1= 0.05 ! snow thickness (only for nn_ice_alb=0)32 REAL(wp) , PARAMETER :: c2= 0.10 ! " "33 REAL(wp) , PARAMETER :: rcloud 34 REAL(wp) , PARAMETER :: r1_c1 = 1. / c135 REAL(wp) , PARAMETER :: r1_c2 = 1. / c230 REAL(wp) , PARAMETER :: rc1 = 0.05 ! snow thickness (only for nn_ice_alb=0) 31 REAL(wp) , PARAMETER :: rc2 = 0.10 ! " " 32 REAL(wp) , PARAMETER :: rcloud = 0.06 ! cloud effect on albedo (only-for nn_ice_alb=0) 33 REAL(wp) , PARAMETER :: r1_c1 = 1. / rc1 34 REAL(wp) , PARAMETER :: r1_c2 = 1. / rc2 36 35 37 36 ! !!* namelist namsbc_alb * … … 114 113 IF ( .NOT. ld_pnd ) THEN !--- No melt ponds OR radiatively inactive melt ponds 115 114 ! Bare ice albedo is prescribed, with implicit assumption on pond fraction and depth 116 WHERE ( ph_snw == 0._wp .AND. pt_ice >= rt0_ice ) ; zalb(:,:,:) = rn_alb_imlt 117 ! !!! MV I think we could replace rt0_ice by rt0 and get rid of rt0 118 ELSE WHERE ; zalb(:,:,:) = rn_alb_idry 119 END WHERE 115 WHERE ( ph_snw == 0._wp .AND. pt_ice >= rt0 ) ; zalb(:,:,:) = rn_alb_imlt 116 ELSEWHERE ; zalb(:,:,:) = rn_alb_idry 117 END WHERE 120 118 ENDIF 121 119 … … 127 125 ! 128 126 ! ! Thickness-dependent bare ice albedo 129 WHERE ( 1.5 < ph_ice ) ;zalb_it = zalb130 ELSE WHERE( 1.0 < ph_ice .AND. ph_ice <= 1.5 ) ;zalb_it = 0.472 + 2.0 * ( zalb - 0.472 ) * ( ph_ice - 1.0 )131 ELSE WHERE( 0.05 < ph_ice .AND. ph_ice <= 1.0 ) ;zalb_it = 0.2467 + 0.7049 * ph_ice &132 & - 0.8608 * ph_ice * ph_ice &133 & + 0.3812 * ph_ice * ph_ice * ph_ice134 ELSE WHERE ;zalb_it = 0.1 + 3.6 * ph_ice127 WHERE ( 1.5 < ph_ice ) ; zalb_it = zalb 128 ELSEWHERE( 1.0 < ph_ice .AND. ph_ice <= 1.5 ) ; zalb_it = 0.472 + 2.0 * ( zalb - 0.472 ) * ( ph_ice - 1.0 ) 129 ELSEWHERE( 0.05 < ph_ice .AND. ph_ice <= 1.0 ) ; zalb_it = 0.2467 + 0.7049 * ph_ice & 130 & - 0.8608 * ph_ice * ph_ice & 131 & + 0.3812 * ph_ice * ph_ice * ph_ice 132 ELSEWHERE ; zalb_it = 0.1 + 3.6 * ph_ice 135 133 END WHERE 136 134 ! … … 139 137 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_it ) * EXP( - ph_pnd * z1_href_pnd ) 140 138 ! ! Snow-free ice albedo is a function of pond fraction 141 WHERE ( ph_snw == 0._wp .AND. pt_ice >= rt0 _ice)139 WHERE ( ph_snw == 0._wp .AND. pt_ice >= rt0 ) 142 140 zalb_it = zalb_it * ( 1. - pafrac_pnd ) + zalb_pnd * pafrac_pnd 143 141 END WHERE … … 150 148 DO ji = 1, jpi 151 149 ! ! Freezing snow 152 ! no effect of underlying ice layer IF snow thickness > c1. Albedo does not depend on snow thick if > c2153 zswitch = 1._wp - MAX( 0._wp , SIGN( 1._wp , - ( ph_snw(ji,jj,jl) - c1 ) ) )150 ! no effect of underlying ice layer IF snow thickness > c1. Albedo does not depend on snow thick if > rc2 151 zswitch = 1._wp - MAX( 0._wp , SIGN( 1._wp , - ( ph_snw(ji,jj,jl) - rc1 ) ) ) 154 152 zalb_sf = ( 1._wp - zswitch ) * ( zalb_it(ji,jj,jl) & 155 153 & + ph_snw(ji,jj,jl) * ( rn_alb_sdry - zalb_it(ji,jj,jl) ) * r1_c1 ) & … … 157 155 ! 158 156 ! ! Melting snow 159 ! no effect of underlying ice layer. Albedo does not depend on snow thick IF > c2160 zswitch = MAX( 0._wp , SIGN( 1._wp , ph_snw(ji,jj,jl) - c2 ) )157 ! no effect of underlying ice layer. Albedo does not depend on snow thick IF > rc2 158 zswitch = MAX( 0._wp , SIGN( 1._wp , ph_snw(ji,jj,jl) - rc2 ) ) 161 159 zalb_sm = ( 1._wp - zswitch ) * ( rn_alb_imlt + ph_snw(ji,jj,jl) * ( rn_alb_smlt - rn_alb_imlt ) * r1_c2 ) & 162 160 & + zswitch * rn_alb_smlt … … 211 209 ! 212 210 ! ! Snow-free ice albedo is weighted mean of ponded ice and bare ice contributions 213 WHERE ( ph_snw == 0._wp .AND. pt_ice >= rt0 _ice)211 WHERE ( ph_snw == 0._wp .AND. pt_ice >= rt0 ) 214 212 zalb_it = zalb_it * ( 1. - pafrac_pnd ) + zalb_pnd * pafrac_pnd 215 213 END WHERE … … 256 254 ! !--- Effective pond fraction (for now, we prevent melt ponds and snow at the same time) 257 255 zafrac_pnd = 0._wp 258 IF ( ld_pnd ) THEN 259 WHERE( ph_snw == 0._wp ) ; zafrac_pnd = pafrac_pnd ; END WHERE! Snow fully "shades" melt ponds256 IF ( ld_pnd ) THEN 257 WHERE( ph_snw == 0._wp ) zafrac_pnd = pafrac_pnd ! Snow fully "shades" melt ponds 260 258 ENDIF 261 259 ! 262 260 ! !--- Specific snow fraction (for now, prescribed) 263 WHERE ( ph_snw > 0._wp ) ;zafrac_snw = 1.264 ELSE WHERE ;zafrac_snw = 0.261 WHERE( ph_snw > 0._wp ) ; zafrac_snw = 1. 262 ELSEWHERE ; zafrac_snw = 0. 265 263 END WHERE 266 264 ! … … 273 271 z1_c1 = 1. / ( LOG(1.5) - LOG(0.05) ) 274 272 z1_c2 = 1. / 0.05 275 WHERE ( 1.5 < ph_ice ) ;zalb_ice = zalb276 ELSE WHERE( 0.05 < ph_ice .AND. ph_ice <= 1.5 ) ; zalb_ice = zalb + ( 0.18 - zalb) * z1_c1 * &273 WHERE ( 1.5 < ph_ice ) ; zalb_ice = zalb 274 ELSEWHERE( 0.05 < ph_ice .AND. ph_ice <= 1.5 ) ; zalb_ice = zalb + ( 0.18 - zalb ) * z1_c1 * & 277 275 & ( LOG(1.5) - LOG(ph_ice) ) 278 ELSE WHERE ;zalb_ice = rn_alb_oce + ( 0.18 - rn_alb_oce ) * z1_c2 * ph_ice276 ELSEWHERE ; zalb_ice = rn_alb_oce + ( 0.18 - rn_alb_oce ) * z1_c2 * ph_ice 279 277 END WHERE 280 278 ! … … 282 280 z1_c2 = 1. / 0.03 283 281 ! 284 WHERE( pt_ice < rt0_snow ) ; zalb_snw = rn_alb_sdry - ( rn_alb_sdry - zalb_ice ) * EXP( - ph_snw * z1_c1 );285 ELSE WHERE ; zalb_snw = rn_alb_smlt - ( rn_alb_smlt - zalb_ice ) * EXP( - ph_snw * z1_c2 );282 WHERE( pt_ice < rt0_snow ) ; zalb_snw = rn_alb_sdry - ( rn_alb_sdry - zalb_ice ) * EXP( - ph_snw * z1_c1 ) 283 ELSEWHERE ; zalb_snw = rn_alb_smlt - ( rn_alb_smlt - zalb_ice ) * EXP( - ph_snw * z1_c2 ) 286 284 END WHERE 287 285 !
Note: See TracChangeset
for help on using the changeset viewer.