Changeset 3178 for palm/trunk


Ignore:
Timestamp:
Jul 27, 2018 10:40:19 AM (6 years ago)
Author:
suehring
Message:

Revise concept for calculation of radiative temperature

File:
1 edited

Legend:

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

    r3175 r3178  
    2828! -----------------
    2929! $Id$
     30! Revise concept for calculation of effective radiative temperature and mapping
     31! of radiative heating
     32!
     33! 3175 2018-07-26 14:07:38Z suehring
    3034! Bugfix for commit 3172
    3135!
     
    30213025                   k_topo = get_topography_top_index_ji( j, i, 's' )
    30223026                   DO k = k_topo+1, nzt+1
    3023                       rad_lw_hr(k,j,i)     = rrtm_lwhr(0,k)  * d_hours_day
    3024                       rad_lw_cs_hr(k,j,i)  = rrtm_lwhrc(0,k) * d_hours_day
     3027                      rad_lw_hr(k,j,i)     = rrtm_lwhr(0,k-k_topo)  * d_hours_day
     3028                      rad_lw_cs_hr(k,j,i)  = rrtm_lwhrc(0,k-k_topo) * d_hours_day
    30253029                   ENDDO
    30263030                ENDDO
     
    33593363!--                Save heating rates (convert from K/d to K/h)
    33603364                   DO k = k_topo+1, nzt+1
    3361                       rad_lw_hr(k,j,i)     = rrtm_lwhr(0,k)  * d_hours_day
    3362                       rad_lw_cs_hr(k,j,i)  = rrtm_lwhrc(0,k) * d_hours_day
     3365                      rad_lw_hr(k,j,i)     = rrtm_lwhr(0,k-k_topo)  * d_hours_day
     3366                      rad_lw_cs_hr(k,j,i)  = rrtm_lwhrc(0,k-k_topo) * d_hours_day
    33633367                   ENDDO
    33643368
     
    49744978!--  See below for more explanation.
    49754979!--  (3) temperature
    4976 !      t_rad_urb = ( (pemitlw - pabslw + emissivity_urb*pinlw) / &
    4977 !           (emissivity_urb*sigma_sb * area_hor) )**0.25_wp
    4978 
     4980!--   first we calculate an effective horizontal area to account for
     4981!--   the effect of vertical surfaces (which contributes to LW emission)
     4982!--   We simply use the ratio of the total LW to the incoming LW flux
     4983      area_hor = pinlw/rad_lw_in_diff(nyn,nxl)
     4984      t_rad_urb = ( (pemitlw - pabslw + emissivity_urb*pinlw) / &
     4985           (emissivity_urb*sigma_sb * area_hor) )**0.25_wp
     4986write(9,*) t_rad_urb
     4987flush(9)
    49794988!
    49804989!--  It has been turned out that the effective radiative temperature is far
     
    49834992!--  surface temperature from all surface elements, resulting in more
    49844993!--  physically meaningful radiative forcings.           
    4985      pt_surf_urb_l    = 0.0_wp
    4986      count_surfaces_l = 0.0_wp
    4987      DO  m = 1, surf_lsm_h%ns
    4988         k                = surf_lsm_h%k(m)
    4989         pt_surf_urb_l    = pt_surf_urb_l + surf_lsm_h%pt_surface(m)            &
    4990                            * ( hyp(k) / 100000.0_wp )**0.286_wp
    4991         count_surfaces_l = count_surfaces_l + 1.0_wp
    4992      ENDDO
    4993      DO  m = 1, surf_usm_h%ns
    4994         k                = surf_usm_h%k(m)
    4995         pt_surf_urb_l    = pt_surf_urb_l + surf_usm_h%pt_surface(m)            &
    4996                            * ( hyp(k) / 100000.0_wp )**0.286_wp
    4997         count_surfaces_l = count_surfaces_l + 1.0_wp
    4998      ENDDO
    4999      DO  l = 0, 3
    5000         DO  m = 1, surf_lsm_v(l)%ns
    5001            k                = surf_lsm_v(l)%k(m)
    5002            pt_surf_urb_l    = pt_surf_urb_l + surf_lsm_v(l)%pt_surface(m)      &
    5003                            * ( hyp(k) / 100000.0_wp )**0.286_wp
    5004            count_surfaces_l = count_surfaces_l + 1.0_wp
    5005         ENDDO
    5006         DO  m = 1, surf_usm_v(l)%ns
    5007            k                = surf_usm_v(l)%k(m)
    5008            pt_surf_urb_l    = pt_surf_urb_l + surf_usm_v(l)%pt_surface(m)      &
    5009                            * ( hyp(k) / 100000.0_wp )**0.286_wp
    5010            count_surfaces_l = count_surfaces_l + 1.0_wp
    5011         ENDDO
    5012      ENDDO
    5013      
    5014      pt_surf_urb    = 0.0_wp
    5015      count_surfaces = 0.0_wp
    5016      
    5017 #if defined( __parallel )
    5018      CALL MPI_ALLREDUCE( count_surfaces_l, count_surfaces, 1, MPI_REAL,        &
    5019                          MPI_SUM, comm2d, ierr)
    5020      CALL MPI_ALLREDUCE( pt_surf_urb_l,  pt_surf_urb,      1, MPI_REAL,        &
    5021                          MPI_SUM, comm2d, ierr)
    5022 #else
    5023      count_surfaces_l = count_surfaces
    5024      pt_surf_urb_l    = pt_surf_urb
    5025 #endif     
    5026 
    5027      t_rad_urb = pt_surf_urb / count_surfaces
     4994!      pt_surf_urb_l    = 0.0_wp
     4995!      count_surfaces_l = 0.0_wp
     4996!      DO  m = 1, surf_lsm_h%ns
     4997!         k                = surf_lsm_h%k(m)
     4998!         pt_surf_urb_l    = pt_surf_urb_l + surf_lsm_h%pt_surface(m)            &
     4999!                            * ( hyp(k) / 100000.0_wp )**0.286_wp
     5000!         count_surfaces_l = count_surfaces_l + 1.0_wp
     5001!      ENDDO
     5002!      DO  m = 1, surf_usm_h%ns
     5003!         k                = surf_usm_h%k(m)
     5004!         pt_surf_urb_l    = pt_surf_urb_l + surf_usm_h%pt_surface(m)            &
     5005!                            * ( hyp(k) / 100000.0_wp )**0.286_wp
     5006!         count_surfaces_l = count_surfaces_l + 1.0_wp
     5007!      ENDDO
     5008!      DO  l = 0, 3
     5009!         DO  m = 1, surf_lsm_v(l)%ns
     5010!            k                = surf_lsm_v(l)%k(m)
     5011!            pt_surf_urb_l    = pt_surf_urb_l + surf_lsm_v(l)%pt_surface(m)      &
     5012!                            * ( hyp(k) / 100000.0_wp )**0.286_wp
     5013!            count_surfaces_l = count_surfaces_l + 1.0_wp
     5014!         ENDDO
     5015!         DO  m = 1, surf_usm_v(l)%ns
     5016!            k                = surf_usm_v(l)%k(m)
     5017!            pt_surf_urb_l    = pt_surf_urb_l + surf_usm_v(l)%pt_surface(m)      &
     5018!                            * ( hyp(k) / 100000.0_wp )**0.286_wp
     5019!            count_surfaces_l = count_surfaces_l + 1.0_wp
     5020!         ENDDO
     5021!      ENDDO
     5022!      
     5023!      pt_surf_urb    = 0.0_wp
     5024!      count_surfaces = 0.0_wp
     5025!      
     5026! #if defined( __parallel )
     5027!      CALL MPI_ALLREDUCE( count_surfaces_l, count_surfaces, 1, MPI_REAL,        &
     5028!                          MPI_SUM, comm2d, ierr)
     5029!      CALL MPI_ALLREDUCE( pt_surf_urb_l,  pt_surf_urb,      1, MPI_REAL,        &
     5030!                          MPI_SUM, comm2d, ierr)
     5031! #else
     5032!      count_surfaces_l = count_surfaces
     5033!      pt_surf_urb_l    = pt_surf_urb
     5034! #endif     
     5035!
     5036!      t_rad_urb = pt_surf_urb / count_surfaces
    50285037     
    50295038    CONTAINS
Note: See TracChangeset for help on using the changeset viewer.