Changeset 3131 for trunk/LMDZ.GENERIC


Ignore:
Timestamp:
Nov 20, 2023, 7:52:28 PM (13 months ago)
Author:
yjaziri
Message:

PCM Generic:

Add chemistry escape output + additional flag for photolysis online albedo

YJ

Location:
trunk/LMDZ.GENERIC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/README

    r3081 r3131  
    18281828Move mu0 (cosinus of solar zenith angle) calculation out of callrad
    18291829This was a issue for photochemistry because mu0 was updated only iradia times
     1830
     1831== 20/11/2023 == YJ
     1832Add chemistry escape output + additional flag for photolysis online albedo
  • trunk/LMDZ.GENERIC/libf/aeronostd/calchim_asis.F90

    r3073 r3131  
    363363            end do
    364364            if (depos) then
    365                ! Surface fluxes
     365               ! Surface fluxes and escape
    366366               do iesp=1,nesp
    367367                  call wstats(ngrid,trim(chemnoms(iesp))//'_flux_mean',trim(chemnoms(iesp))//' mean flux',    &
     
    369369                  call wstats(ngrid,trim(chemnoms(iesp))//'_flux',trim(chemnoms(iesp))//' flux',    &
    370370                               '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)))))
    371373               end do
    372374            endif ! end depos
     
    395397         end do
    396398         if (depos) then
    397             ! Surface fluxes
     399            ! Surface fluxes and escape
    398400            do iesp=1,nesp
    399401               call writediagfi(ngrid,trim(chemnoms(iesp))//'_flux_mean',trim(chemnoms(iesp))//' mean flux',    &
     
    401403               call writediagfi(ngrid,trim(chemnoms(iesp))//'_flux',trim(chemnoms(iesp))//' flux',    &
    402404                            '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)))))
    403407            end do
    404408            ! Restart flux average
  • trunk/LMDZ.GENERIC/libf/aeronostd/photolysis_online.F

    r3100 r3131  
    11721172
    11731173      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_ice
    1176       use ocean_slab_mod, only: alb_ice_min
    1177       use ocean_slab_mod, only: alb_ice_max
    1178       use callkeys_mod,  only: ok_slab_ocean, co2cond, alb_ocean
     1174      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
    11791179      use phys_state_var_mod, only: albedo_bareground,
    11801180     &                              rnat, qsurf, sea_ice,
     
    12141214!     See hydrol.F90 for taking into account new tendencies
    12151215
    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
    12191221       
    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 Albedo
    1222      &                        *exp(-sea_ice(ig)/h_alb_ice)
    1223           ! Albedo final calculation :
    1224           do iw=1,nw - 1
    1225              albedo_chim(iw) = pctsrf_sic(ig)*
    1226      &                        (albedo_snow_chim(iw)*zfra
    1227      &                        + alb_ice*(1.0-zfra))
    1228      &                        + (1.-pctsrf_sic(ig))*alb_ocean
    1229           enddo 
    1230 
    1231         else !ok_slab_ocean
     1222            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
    12321234           
    12331235           
    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
    12461271          else
    1247 
    12481272            DO iw=1,nw - 1
    1249               albedo_chim(iw) = alb_ocean
    1250               if(ngrid.eq.1) then
    1251                 albedo_chim(iw) = albedo_bareground(ig)
    1252               endif
     1273              albedo_chim(iw) = albedo_bareground(ig)
     1274     &                        + (albedo_snow_chim(iw)
     1275     &                           - albedo_bareground(ig))
     1276     &                        *qsurf(ig,igcm_h2o_ice)/snowlayer
    12531277            ENDDO
    1254 
    12551278          endif
    12561279
    1257         endif!(ok_slab_ocean)
    1258 
    1259 
    1260 !     Continent
    1261 !     ---------
    1262       elseif (nint(rnat(ig)).eq.1) then
    1263 
    1264 !     re-calculate continental albedo
    1265         if (qsurf(ig,igcm_h2o_ice).ge.snowlayer) then
    1266           DO iw=1,nw - 1
    1267             albedo_chim(iw) = albedo_snow_chim(iw)
    1268           ENDDO
    12691280        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
    12761286        endif
    1277 
    12781287      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
    12851290
    12861291!     Re-add the albedo effects of CO2 ice if necessary
Note: See TracChangeset for help on using the changeset viewer.