Changeset 12377 for NEMO/trunk/src/ICE/icealb.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/ICE/icealb.F90
r11536 r12377 38 38 REAL(wp) :: rn_alb_dpnd ! ponded ice albedo 39 39 40 !! * Substitutions 41 # include "do_loop_substitute.h90" 40 42 !!---------------------------------------------------------------------- 41 43 !! NEMO/ICE 4.0 , NEMO Consortium (2018) … … 117 119 ! 118 120 DO jl = 1, jpl 119 DO jj = 1, jpj 120 DO ji = 1, jpi 121 ! !--- Specific snow, ice and pond fractions (for now, we prevent melt ponds and snow at the same time) 122 IF( ph_snw(ji,jj,jl) == 0._wp ) THEN 123 zafrac_snw = 0._wp 124 IF( ld_pnd_alb ) THEN 125 zafrac_pnd = pafrac_pnd(ji,jj,jl) 126 ELSE 127 zafrac_pnd = 0._wp 128 ENDIF 129 zafrac_ice = 1._wp - zafrac_pnd 121 DO_2D_11_11 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) 130 127 ELSE 131 zafrac_snw = 1._wp ! Snow fully "shades" melt ponds and ice132 128 zafrac_pnd = 0._wp 133 zafrac_ice = 0._wp134 129 ENDIF 135 ! 136 ! !--- Bare ice albedo (for hi > 150cm) 137 IF( ld_pnd_alb ) THEN 138 zalb_ice = rn_alb_idry 139 ELSE 140 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt 141 ELSE ; zalb_ice = rn_alb_idry ; ENDIF 142 ENDIF 143 ! !--- Bare ice albedo (for hi < 150cm) 144 IF( 0.05 < ph_ice(ji,jj,jl) .AND. ph_ice(ji,jj,jl) <= 1.5 ) THEN ! 5cm < hi < 150cm 145 zalb_ice = zalb_ice + ( 0.18 - zalb_ice ) * z1_c1 * ( LOG(1.5) - LOG(ph_ice(ji,jj,jl)) ) 146 ELSEIF( ph_ice(ji,jj,jl) <= 0.05 ) THEN ! 0cm < hi < 5cm 147 zalb_ice = rn_alb_oce + ( 0.18 - rn_alb_oce ) * z1_c2 * ph_ice(ji,jj,jl) 148 ENDIF 149 ! 150 ! !--- Snow-covered ice albedo (freezing, melting cases) 151 IF( pt_su(ji,jj,jl) < rt0 ) THEN 152 zalb_snw = rn_alb_sdry - ( rn_alb_sdry - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c3 ) 153 ELSE 154 zalb_snw = rn_alb_smlt - ( rn_alb_smlt - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c4 ) 155 ENDIF 156 ! !--- Ponded ice albedo 157 IF( ld_pnd_alb ) THEN 158 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) 159 ELSE 160 zalb_pnd = rn_alb_dpnd 161 ENDIF 162 ! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions 163 palb_os(ji,jj,jl) = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) 164 ! 165 palb_cs(ji,jj,jl) = palb_os(ji,jj,jl) & 166 & - ( - 0.1010 * palb_os(ji,jj,jl) * palb_os(ji,jj,jl) & 167 & + 0.1933 * palb_os(ji,jj,jl) - 0.0148 ) * tmask(ji,jj,1) 168 ! 169 END DO 170 END DO 130 zafrac_ice = 1._wp - zafrac_pnd 131 ELSE 132 zafrac_snw = 1._wp ! Snow fully "shades" melt ponds and ice 133 zafrac_pnd = 0._wp 134 zafrac_ice = 0._wp 135 ENDIF 136 ! 137 ! !--- Bare ice albedo (for hi > 150cm) 138 IF( ld_pnd_alb ) THEN 139 zalb_ice = rn_alb_idry 140 ELSE 141 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt 142 ELSE ; zalb_ice = rn_alb_idry ; ENDIF 143 ENDIF 144 ! !--- Bare ice albedo (for hi < 150cm) 145 IF( 0.05 < ph_ice(ji,jj,jl) .AND. ph_ice(ji,jj,jl) <= 1.5 ) THEN ! 5cm < hi < 150cm 146 zalb_ice = zalb_ice + ( 0.18 - zalb_ice ) * z1_c1 * ( LOG(1.5) - LOG(ph_ice(ji,jj,jl)) ) 147 ELSEIF( ph_ice(ji,jj,jl) <= 0.05 ) THEN ! 0cm < hi < 5cm 148 zalb_ice = rn_alb_oce + ( 0.18 - rn_alb_oce ) * z1_c2 * ph_ice(ji,jj,jl) 149 ENDIF 150 ! 151 ! !--- Snow-covered ice albedo (freezing, melting cases) 152 IF( pt_su(ji,jj,jl) < rt0 ) THEN 153 zalb_snw = rn_alb_sdry - ( rn_alb_sdry - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c3 ) 154 ELSE 155 zalb_snw = rn_alb_smlt - ( rn_alb_smlt - zalb_ice ) * EXP( - ph_snw(ji,jj,jl) * z1_c4 ) 156 ENDIF 157 ! !--- 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 ! !--- 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 ! 170 END_2D 171 171 END DO 172 172 ! … … 190 190 !!---------------------------------------------------------------------- 191 191 ! 192 REWIND( numnam_ice_ref ) ! Namelist namalb in reference namelist : Albedo parameters193 192 READ ( numnam_ice_ref, namalb, IOSTAT = ios, ERR = 901) 194 193 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namalb in reference namelist' ) 195 REWIND( numnam_ice_cfg ) ! Namelist namalb in configuration namelist : Albedo parameters196 194 READ ( numnam_ice_cfg, namalb, IOSTAT = ios, ERR = 902 ) 197 195 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namalb in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.