Ignore:
Timestamp:
Sep 19, 2016 5:29:57 PM (5 years ago)
Author:
kanani
Message:

changes related to steering and formating of urban surface model

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/plant_canopy_model_mod.f90

    r2008 r2011  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Renamed canopy_heat_flux to pc_heating_rate, since the original meaning/
     23! calculation of the quantity has changed, related to the urban surface model
     24! and similar future applications.
    2325!
    2426! Former revisions:
     
    146148   
    147149    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::                                 &
    148        canopy_heat_flux                                    !< canopy heat flux
     150       pc_heating_rate                                    !< plant canopy heating rate
    149151    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  cum_lai_hf !< cumulative lai for heatflux calc.
    150152    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  lad_s      !< lad on scalar-grid
     
    162164!
    163165!-- Public variables and constants
    164     PUBLIC canopy_heat_flux, canopy_mode, cthf, dt_plant_canopy, lad, lad_s,   &
     166    PUBLIC pc_heating_rate, canopy_mode, cthf, dt_plant_canopy, lad, lad_s,   &
    165167           pch_index, plant_canopy
    166168           
     
    503505       IF ( cthf /= 0.0_wp )  THEN
    504506          ALLOCATE( cum_lai_hf(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                 &
    505                     canopy_heat_flux(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     507                    pc_heating_rate(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    506508       ENDIF
    507509
     
    548550
    549551!
    550 !--    Initialization of the canopy heat source distribution
     552!--    Initialization of the canopy heat source distribution due to heating
     553!--    of the canopy layers by incoming solar radiation, in case that a non-zero
     554!--    value is set for the canopy top heat flux (cthf), which equals the
     555!--    available net radiation at canopy top.
     556!--    The heat source distribution is calculated by a decaying exponential
     557!--    function of the downward cumulative leaf area index (cum_lai_hf),
     558!--    assuming that the foliage inside the plant canopy is heated by solar
     559!--    radiation penetrating the canopy layers according to the distribution
     560!--    of net radiation as suggested by Brown & Covey (1966; Agric. Meteorol. 3,
     561!--    73–96). This approach has been applied e.g. by Shaw & Schumann (1992;
     562!--    Bound.-Layer Meteorol. 61, 47–64)
    551563       IF ( cthf /= 0.0_wp )  THEN
    552564!
    553 !--       Piecewise calculation of the leaf area index by vertical
     565!--       Piecewise calculation of the cumulative leaf area index by vertical
    554566!--       integration of the leaf area density
    555567          cum_lai_hf(:,:,:) = 0.0_wp
     
    581593
    582594!
    583 !--       Calculation of the upward kinematic vertical heat flux within the
    584 !--       canopy
     595!--       Calculation of the heating rate (K/s) within the different layers of
     596!--       the plant canopy
    585597          DO  i = nxlg, nxrg
    586598             DO  j = nysg, nyng
    587                 DO  k = 0, pch_index
    588                    canopy_heat_flux(k,j,i) = cthf *                            &
    589                                              exp( -ext_coef * cum_lai_hf(k,j,i) )
    590                 ENDDO
    591              ENDDO
    592           ENDDO
    593 
    594 !
    595 !--       In areas covered with canopy, the surface heat flux is set to
    596 !--       the surface value of the above calculated in-canopy heat flux
    597 !--       distribution
    598           DO  i = nxlg,nxrg
    599              DO  j = nysg, nyng
    600                 IF ( canopy_heat_flux(0,j,i) /= cthf )  THEN
    601                    shf(j,i) = canopy_heat_flux(0,j,i)
     599!
     600!--             Calculation only necessary in areas covered with canopy
     601                IF ( cum_lai_hf(0,j,i) /= 0.0_wp )  THEN
     602!--             
     603!--                In areas with canopy the surface value of the canopy heat
     604!--                flux distribution overrides the surface heat flux (shf)
     605                   shf(j,i) = cthf * exp( -ext_coef * cum_lai_hf(0,j,i) )
     606!
     607!--                Within the different canopy layers the plant-canopy heating
     608!--                rate (pc_heating_rate) is calculated as the vertical
     609!--                divergence of the canopy heat fluxes at the top and bottom
     610!--                of the respective layer
     611                   DO  k = 1, pch_index
     612                      pc_heating_rate(k,j,i) = cthf *                         &
     613                                                ( exp(-ext_coef*cum_lai_hf(k,j,i)) -  &
     614                                                  exp(-ext_coef*cum_lai_hf(k-1,j,i)) ) / dzw(k)
     615                   ENDDO
    602616                ENDIF
    603617             ENDDO
     
    689703        INTEGER(iwp)                            :: i, j, dtype, nzp, nzpltop, nzpl, kk
    690704        REAL(wp), DIMENSION(:), ALLOCATABLE     :: col
    691        
    692         lad_s = 0.0_wp
    693 !         cdc = 0.0_wp
    694 !         if ( passive_scalar )  then
    695 !            lsc = 0.0_wp
    696 !            lsec = 0.0_wp
    697 !         endif
    698 
    699         WRITE(9,*) 'Reading PLANT_CANOPY_DATA_3D', nzt
    700         FLUSH(9)
     705
    701706        OPEN(152, file='PLANT_CANOPY_DATA_3D', access='SEQUENTIAL', &
    702707                action='READ', status='OLD', form='FORMATTED', err=515)
     
    709714            READ(152, *, err=516, end=517) dtype, i, j, col(:)
    710715            IF ( i < nxlg .or. i > nxrg .or. j < nysg .or. j > nyng ) CYCLE
    711             WRITE(9,*) 'Read ', i,j,nzb_s_inner(j,i),col(:)
    712             FLUSH(9)
    713716
    714717            SELECT CASE (dtype)
     
    974977                   DO  k = nzb_s_inner(j,i)+1, nzb_s_inner(j,i)+pch_index
    975978                      kk = k - nzb_s_inner(j,i)  !- lad arrays are defined flat
    976                       tend(k,j,i) = tend(k,j,i) +                              &
    977                                        ( canopy_heat_flux(kk,j,i) -            &
    978                                          canopy_heat_flux(kk-1,j,i) ) / dzw(k)
     979                      tend(k,j,i) = tend(k,j,i) + pc_heating_rate(kk,j,i)
    979980                   ENDDO
    980981                ENDDO
     
    12811282             DO  k = nzb_s_inner(j,i)+1, nzb_s_inner(j,i)+pch_index
    12821283                kk = k - nzb_s_inner(j,i)  !- lad arrays are defined flat
    1283                 tend(k,j,i) = tend(k,j,i) +                                    &
    1284                                  ( canopy_heat_flux(kk,j,i) -                  &
    1285                                    canopy_heat_flux(kk-1,j,i) ) / dzw(k)
     1284                tend(k,j,i) = tend(k,j,i) + pc_heating_rate(kk,j,i)
    12861285             ENDDO
    12871286
Note: See TracChangeset for help on using the changeset viewer.