Changeset 3131 for trunk/LMDZ.GENERIC
- Timestamp:
- Nov 20, 2023, 7:52:28 PM (13 months ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/README
r3081 r3131 1828 1828 Move mu0 (cosinus of solar zenith angle) calculation out of callrad 1829 1829 This was a issue for photochemistry because mu0 was updated only iradia times 1830 1831 == 20/11/2023 == YJ 1832 Add chemistry escape output + additional flag for photolysis online albedo -
trunk/LMDZ.GENERIC/libf/aeronostd/calchim_asis.F90
r3073 r3131 363 363 end do 364 364 if (depos) then 365 ! Surface fluxes 365 ! Surface fluxes and escape 366 366 do iesp=1,nesp 367 367 call wstats(ngrid,trim(chemnoms(iesp))//'_flux_mean',trim(chemnoms(iesp))//' mean flux', & … … 369 369 call wstats(ngrid,trim(chemnoms(iesp))//'_flux',trim(chemnoms(iesp))//' flux', & 370 370 'molecule.m-2.s-1',2,surface_flux(1,indexchim(trim(chemnoms(iesp))))) 371 call writediagfi(ngrid,trim(chemnoms(iesp))//'_escape',trim(chemnoms(iesp))//' escape', & 372 'molecule.m-2.s-1',2,escape(1,indexchim(trim(chemnoms(iesp))))) 371 373 end do 372 374 endif ! end depos … … 395 397 end do 396 398 if (depos) then 397 ! Surface fluxes 399 ! Surface fluxes and escape 398 400 do iesp=1,nesp 399 401 call writediagfi(ngrid,trim(chemnoms(iesp))//'_flux_mean',trim(chemnoms(iesp))//' mean flux', & … … 401 403 call writediagfi(ngrid,trim(chemnoms(iesp))//'_flux',trim(chemnoms(iesp))//' flux', & 402 404 'molecule.m-2.s-1',2,surface_flux(1,indexchim(trim(chemnoms(iesp))))) 405 call writediagfi(ngrid,trim(chemnoms(iesp))//'_escape',trim(chemnoms(iesp))//' escape', & 406 'molecule.m-2.s-1',2,escape(1,indexchim(trim(chemnoms(iesp))))) 403 407 end do 404 408 ! Restart flux average -
trunk/LMDZ.GENERIC/libf/aeronostd/photolysis_online.F
r3100 r3131 1172 1172 1173 1173 use chimiedata_h, only: albedo_snow_chim, albedo_co2_ice_chim 1174 ! use slab_ice_h, only: h_alb_ice, alb_ice_min, alb_ice_max 1175 use ocean_slab_mod, only: h_alb_ice1176 use ocean_slab_mod, only: alb_ice_min1177 use ocean_slab_mod, only: alb_ice_max1178 use callkeys_mod, only: ok_slab_ocean, co2cond, alb_ocean1174 use slab_ice_h, only: h_alb_ice, 1175 & alb_ice_min, alb_ice_max 1176 use tracer_h, only: igcm_h2o_ice, igcm_co2_ice 1177 use callkeys_mod, only: ok_slab_ocean, co2cond, alb_ocean, 1178 & hydrology 1179 1179 use phys_state_var_mod, only: albedo_bareground, 1180 1180 & rnat, qsurf, sea_ice, … … 1214 1214 ! See hydrol.F90 for taking into account new tendencies 1215 1215 1216 if(nint(rnat(ig)).eq.0)then 1217 1218 if(ok_slab_ocean) then 1216 if(hydrology)then 1217 1218 if(nint(rnat(ig)).eq.0)then 1219 1220 if(ok_slab_ocean) then 1219 1221 1220 zfra = MAX(0.0,MIN(1.0,qsurf(ig,igcm_h2o_ice)/45.0)) ! Snow Fraction (Critical height 45kg/m2~15cm)1221 alb_ice=alb_ice_max-(alb_ice_max-alb_ice_min) ! Ice Albedo1222 & *exp(-sea_ice(ig)/h_alb_ice)1223 ! Albedo final calculation :1224 do iw=1,nw - 11225 albedo_chim(iw) = pctsrf_sic(ig)*1226 & (albedo_snow_chim(iw)*zfra1227 & + alb_ice*(1.0-zfra))1228 & + (1.-pctsrf_sic(ig))*alb_ocean1229 enddo1230 1231 else !ok_slab_ocean1222 zfra = MAX(0.0,MIN(1.0,qsurf(ig,igcm_h2o_ice)/45.0)) ! Snow Fraction (Critical height 45kg/m2~15cm) 1223 alb_ice=alb_ice_max-(alb_ice_max-alb_ice_min) ! Ice Albedo 1224 & *exp(-sea_ice(ig)/h_alb_ice) 1225 ! Albedo final calculation : 1226 do iw=1,nw - 1 1227 albedo_chim(iw) = pctsrf_sic(ig)* 1228 & (albedo_snow_chim(iw)*zfra 1229 & + alb_ice*(1.0-zfra)) 1230 & + (1.-pctsrf_sic(ig))*alb_ocean 1231 enddo 1232 1233 else !ok_slab_ocean 1232 1234 1233 1235 1234 ! calculate oceanic ice height including the latent heat of ice formation 1235 ! hice is the height of oceanic ice with a maximum of maxicethick. 1236 hice = qsurf(ig,igcm_h2o_ice)/rhowater ! update hice to include recent snowfall 1237 twater = tsurf(ig) - hice*RLFTT*rhowater/capcal(ig) 1238 ! this is temperature water would have if we melted entire ocean ice layer 1239 1240 if(twater .lt. T_h2O_ice_liq)then 1241 1242 do iw=1,nw - 1 1243 albedo_chim(iw) = albedo_snow_chim(iw) ! Albedo of ice has been replaced by albedo of snow here. MT2015. 1244 enddo 1245 1236 ! calculate oceanic ice height including the latent heat of ice formation 1237 ! hice is the height of oceanic ice with a maximum of maxicethick. 1238 hice = qsurf(ig,igcm_h2o_ice)/rhowater ! update hice to include recent snowfall 1239 twater = tsurf(ig) - hice*RLFTT*rhowater/capcal(ig) 1240 ! this is temperature water would have if we melted entire ocean ice layer 1241 1242 if(twater .lt. T_h2O_ice_liq)then 1243 1244 do iw=1,nw - 1 1245 albedo_chim(iw) = albedo_snow_chim(iw) ! Albedo of ice has been replaced by albedo of snow here. MT2015. 1246 enddo 1247 1248 else 1249 1250 DO iw=1,nw - 1 1251 albedo_chim(iw) = alb_ocean 1252 if(ngrid.eq.1) then 1253 albedo_chim(iw) = albedo_bareground(ig) 1254 endif 1255 ENDDO 1256 1257 endif 1258 1259 endif!(ok_slab_ocean) 1260 1261 1262 ! Continent 1263 ! --------- 1264 elseif (nint(rnat(ig)).eq.1) then 1265 1266 ! re-calculate continental albedo 1267 if (qsurf(ig,igcm_h2o_ice).ge.snowlayer) then 1268 DO iw=1,nw - 1 1269 albedo_chim(iw) = albedo_snow_chim(iw) 1270 ENDDO 1246 1271 else 1247 1248 1272 DO iw=1,nw - 1 1249 albedo_chim(iw) = alb _ocean1250 if(ngrid.eq.1) then1251 albedo_chim(iw) = albedo_bareground(ig)1252 endif1273 albedo_chim(iw) = albedo_bareground(ig) 1274 & + (albedo_snow_chim(iw) 1275 & - albedo_bareground(ig)) 1276 & *qsurf(ig,igcm_h2o_ice)/snowlayer 1253 1277 ENDDO 1254 1255 1278 endif 1256 1279 1257 endif!(ok_slab_ocean)1258 1259 1260 ! Continent1261 ! ---------1262 elseif (nint(rnat(ig)).eq.1) then1263 1264 ! re-calculate continental albedo1265 if (qsurf(ig,igcm_h2o_ice).ge.snowlayer) then1266 DO iw=1,nw - 11267 albedo_chim(iw) = albedo_snow_chim(iw)1268 ENDDO1269 1280 else 1270 DO iw=1,nw - 1 1271 albedo_chim(iw) = albedo_bareground(ig) 1272 & + (albedo_snow_chim(iw) 1273 & - albedo_bareground(ig)) 1274 & *qsurf(ig,igcm_h2o_ice)/snowlayer 1275 ENDDO 1281 1282 print*,'Surface type not recognised in photolysis_online.F!' 1283 print*,'Exiting...' 1284 call abort 1285 1276 1286 endif 1277 1278 1287 else 1279 1280 print*,'Surface type not recognised in photolysis_online.F!' 1281 print*,'Exiting...' 1282 call abort 1283 1284 endif 1288 albedo_chim(:) = albedo_bareground(ig) 1289 endif ! end if hydrology 1285 1290 1286 1291 ! Re-add the albedo effects of CO2 ice if necessary
Note: See TracChangeset
for help on using the changeset viewer.