Ignore:
Timestamp:
Dec 7, 2018 11:56:58 AM (5 years ago)
Author:
suehring
Message:

Output of radiation-related quantities migrated from urban_surface_model_mod to radiation_model_mod

File:
1 edited

Legend:

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

    r3597 r3607  
    2828! -----------------
    2929! $Id$
     30! Output of radiation-related quantities migrated to radiation_model_mod.
     31!
     32! 3597 2018-12-04 08:40:18Z maronga
    3033! Fixed calculation method of near surface air potential temperature at 10 cm
    3134! and moved to surface_layer_fluxes. Removed unnecessary _eb strings.
     
    438441               radiation, rad_sw_in, rad_lw_in, rad_sw_out, rad_lw_out,        &
    439442               sigma_sb, sun_direction, sun_dir_lat, sun_dir_lon,              &
    440                force_radiation_call, surfinsw, surfinlw, surfinswdir,          &
    441                surfinswdif, surfoutsw, surfoutlw, surfins,nsvfl, svf, svfsurf, &
    442                surfinl, surfinlwdif, rad_sw_in_dir, rad_sw_in_diff,            &
    443                rad_lw_in_diff, surfouts, surfoutl, surfoutsl, surfoutll, surf, &
    444                surfl, nsurfl, pcbinsw, pcbinlw, pcbinswdir,                    &
    445                pcbinswdif, iup_u, inorth_u, isouth_u, ieast_u, iwest_u, iup_l, &
    446                inorth_l, isouth_l, ieast_l, iwest_l, id,                       &
     443               force_radiation_call, iup_u, inorth_u, isouth_u, ieast_u,       &
     444               iwest_u, iup_l, inorth_l, isouth_l, ieast_l, iwest_l, id,       &
    447445               iz, iy, ix,  nsurf, idsvf, ndsvf,                               &
    448446               idcsf, ndcsf, kdcsf, pct,                                       &
    449                startland, endland, startwall, endwall, skyvf, skyvft, nzub,    &
    450                nzut, npcbl, pcbl, unscheduled_radiation_calls
     447               nzub, nzut, unscheduled_radiation_calls
    451448
    452449    USE statistics,                                                            &
     
    461458    IMPLICIT NONE
    462459
    463     !
     460!
    464461!-- USM model constants
    465462
    466463    REAL(wp), PARAMETER ::                     &
    467464              b_ch               = 6.04_wp,    & ! Clapp & Hornberger exponent
    468               lambda_h_green_dry       = 0.19_wp,    & ! heat conductivity for dry soil   
    469               lambda_h_green_sm        = 3.44_wp,    & ! heat conductivity of the soil matrix
     465              lambda_h_green_dry = 0.19_wp,    & ! heat conductivity for dry soil   
     466              lambda_h_green_sm  = 3.44_wp,    & ! heat conductivity of the soil matrix
    470467              lambda_h_water     = 0.57_wp,    & ! heat conductivity of water
    471468              psi_sat            = -0.388_wp,  & ! soil matrix potential at saturation
     
    965962!-- arrays for time averages
    966963!-- Attention: the variable rad_net_av is also used in the 3d field variable in radiation_model_mod.f90. It may be better to rename it
    967     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinsw_av      !< average of sw radiation falling to local surface including radiation from reflections
    968     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinlw_av      !< average of lw radiation falling to local surface including radiation from reflections
    969     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinswdir_av   !< average of direct sw radiation falling to local surface
    970     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinswdif_av   !< average of diffuse sw radiation from sky and model boundary falling to local surface
    971     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinlwdif_av   !< average of diffuse lw radiation from sky and model boundary falling to local surface
    972     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinswref_av   !< average of sw radiation falling to surface from reflections
    973     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinlwref_av   !< average of lw radiation falling to surface from reflections
    974     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfoutsw_av     !< average of total sw radiation outgoing from nonvirtual surfaces surfaces after all reflection
    975     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfoutlw_av     !< average of total lw radiation outgoing from nonvirtual surfaces surfaces after all reflection
    976     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfins_av       !< average of array of residua of sw radiation absorbed in surface after last reflection
    977     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinl_av       !< average of array of residua of lw radiation absorbed in surface after last reflection
    978     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinlw_av       !< Average of pcbinlw
    979     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinsw_av       !< Average of pcbinsw
    980     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswdir_av    !< Average of pcbinswdir
    981     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswdif_av    !< Average of pcbinswdif
    982     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswref_av    !< Average of pcbinswref
    983     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfhf_av        !< average of total radiation flux incoming to minus outgoing from local surface 
    984964    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  wghf_eb_av       !< average of wghf_eb
    985965    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  wshf_eb_av       !< average of wshf_eb
     
    18331813           
    18341814           SELECT CASE ( TRIM( var ) )
    1835                
    1836                 CASE ( 'usm_rad_net' )
    1837 !--                 array of complete radiation balance
    1838                     IF ( l == -1 ) THEN
    1839                         IF ( .NOT.  ALLOCATED(surf_usm_h%rad_net_av) )  THEN
    1840                             ALLOCATE( surf_usm_h%rad_net_av(1:surf_usm_h%ns) )
    1841                             surf_usm_h%rad_net_av = 0.0_wp
    1842                         ENDIF
    1843                     ELSE
    1844                         IF ( .NOT.  ALLOCATED(surf_usm_v(l)%rad_net_av) )  THEN
    1845                             ALLOCATE( surf_usm_v(l)%rad_net_av(1:surf_usm_v(l)%ns) )
    1846                             surf_usm_v(l)%rad_net_av = 0.0_wp
    1847                         ENDIF
    1848                     ENDIF
    1849                    
    1850                 CASE ( 'usm_rad_insw' )
    1851 !--                 array of sw radiation falling to surface after i-th reflection
    1852                     IF ( .NOT.  ALLOCATED(surfinsw_av) )  THEN
    1853                         ALLOCATE( surfinsw_av(nsurfl) )
    1854                         surfinsw_av = 0.0_wp
    1855                     ENDIF
    1856 
    1857                 CASE ( 'usm_rad_inlw' )
    1858 !--                 array of lw radiation falling to surface after i-th reflection
    1859                     IF ( .NOT.  ALLOCATED(surfinlw_av) )  THEN
    1860                         ALLOCATE( surfinlw_av(nsurfl) )
    1861                         surfinlw_av = 0.0_wp
    1862                     ENDIF
    1863 
    1864                 CASE ( 'usm_rad_inswdir' )
    1865 !--                 array of direct sw radiation falling to surface from sun
    1866                     IF ( .NOT.  ALLOCATED(surfinswdir_av) )  THEN
    1867                         ALLOCATE( surfinswdir_av(nsurfl) )
    1868                         surfinswdir_av = 0.0_wp
    1869                     ENDIF
    1870 
    1871                 CASE ( 'usm_rad_inswdif' )
    1872 !--                 array of difusion sw radiation falling to surface from sky and borders of the domain
    1873                     IF ( .NOT.  ALLOCATED(surfinswdif_av) )  THEN
    1874                         ALLOCATE( surfinswdif_av(nsurfl) )
    1875                         surfinswdif_av = 0.0_wp
    1876                     ENDIF
    1877 
    1878                 CASE ( 'usm_rad_inswref' )
    1879 !--                 array of sw radiation falling to surface from reflections
    1880                     IF ( .NOT.  ALLOCATED(surfinswref_av) )  THEN
    1881                         ALLOCATE( surfinswref_av(nsurfl) )
    1882                         surfinswref_av = 0.0_wp
    1883                     ENDIF
    1884 
    1885                 CASE ( 'usm_rad_inlwdif' )
    1886 !--                 array of sw radiation falling to surface after i-th reflection
    1887                    IF ( .NOT.  ALLOCATED(surfinlwdif_av) )  THEN
    1888                         ALLOCATE( surfinlwdif_av(nsurfl) )
    1889                         surfinlwdif_av = 0.0_wp
    1890                     ENDIF
    1891 
    1892                 CASE ( 'usm_rad_inlwref' )
    1893 !--                 array of lw radiation falling to surface from reflections
    1894                     IF ( .NOT.  ALLOCATED(surfinlwref_av) )  THEN
    1895                         ALLOCATE( surfinlwref_av(nsurfl) )
    1896                         surfinlwref_av = 0.0_wp
    1897                     ENDIF
    1898 
    1899                 CASE ( 'usm_rad_outsw' )
    1900 !--                 array of sw radiation emitted from surface after i-th reflection
    1901                     IF ( .NOT.  ALLOCATED(surfoutsw_av) )  THEN
    1902                         ALLOCATE( surfoutsw_av(nsurfl) )
    1903                         surfoutsw_av = 0.0_wp
    1904                     ENDIF
    1905 
    1906                 CASE ( 'usm_rad_outlw' )
    1907 !--                 array of lw radiation emitted from surface after i-th reflection
    1908                     IF ( .NOT.  ALLOCATED(surfoutlw_av) )  THEN
    1909                         ALLOCATE( surfoutlw_av(nsurfl) )
    1910                         surfoutlw_av = 0.0_wp
    1911                     ENDIF
    1912                 CASE ( 'usm_rad_ressw' )
    1913 !--                 array of residua of sw radiation absorbed in surface after last reflection
    1914                     IF ( .NOT.  ALLOCATED(surfins_av) )  THEN
    1915                         ALLOCATE( surfins_av(nsurfl) )
    1916                         surfins_av = 0.0_wp
    1917                     ENDIF
    1918                                    
    1919                 CASE ( 'usm_rad_reslw' )
    1920 !--                 array of residua of lw radiation absorbed in surface after last reflection
    1921                     IF ( .NOT.  ALLOCATED(surfinl_av) )  THEN
    1922                         ALLOCATE( surfinl_av(nsurfl) )
    1923                         surfinl_av = 0.0_wp
    1924                     ENDIF
    1925                                    
    1926                 CASE ( 'usm_rad_pc_inlw' )
    1927 !--                 array of of lw radiation absorbed in plant canopy
    1928                     IF ( .NOT.  ALLOCATED(pcbinlw_av) )  THEN
    1929                         ALLOCATE( pcbinlw_av(1:npcbl) )
    1930                         pcbinlw_av = 0.0_wp
    1931                     ENDIF
    1932                                    
    1933                 CASE ( 'usm_rad_pc_insw' )
    1934 !--                 array of of sw radiation absorbed in plant canopy
    1935                     IF ( .NOT.  ALLOCATED(pcbinsw_av) )  THEN
    1936                         ALLOCATE( pcbinsw_av(1:npcbl) )
    1937                         pcbinsw_av = 0.0_wp
    1938                     ENDIF
    1939                                    
    1940                 CASE ( 'usm_rad_pc_inswdir' )
    1941 !--                 array of of direct sw radiation absorbed in plant canopy
    1942                     IF ( .NOT.  ALLOCATED(pcbinswdir_av) )  THEN
    1943                         ALLOCATE( pcbinswdir_av(1:npcbl) )
    1944                         pcbinswdir_av = 0.0_wp
    1945                     ENDIF
    1946                                    
    1947                 CASE ( 'usm_rad_pc_inswdif' )
    1948 !--                 array of of diffuse sw radiation absorbed in plant canopy
    1949                     IF ( .NOT.  ALLOCATED(pcbinswdif_av) )  THEN
    1950                         ALLOCATE( pcbinswdif_av(1:npcbl) )
    1951                         pcbinswdif_av = 0.0_wp
    1952                     ENDIF
    1953                                    
    1954                 CASE ( 'usm_rad_pc_inswref' )
    1955 !--                 array of of reflected sw radiation absorbed in plant canopy
    1956                     IF ( .NOT.  ALLOCATED(pcbinswref_av) )  THEN
    1957                         ALLOCATE( pcbinswref_av(1:npcbl) )
    1958                         pcbinswref_av = 0.0_wp
    1959                     ENDIF
    1960                                    
    1961                 CASE ( 'usm_rad_hf' )
    1962 !--                 array of heat flux from radiation for surfaces after i-th reflection
    1963                     IF ( l == -1 ) THEN
    1964                         IF ( .NOT.  ALLOCATED(surf_usm_h%surfhf_av) )  THEN
    1965                            ALLOCATE( surf_usm_h%surfhf_av(1:surf_usm_h%ns) )
    1966                            surf_usm_h%surfhf_av = 0.0_wp
    1967                         ENDIF
    1968                     ELSE
    1969                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%surfhf_av) )  THEN
    1970                            ALLOCATE( surf_usm_v(l)%surfhf_av(1:surf_usm_v(l)%ns) )
    1971                            surf_usm_v(l)%surfhf_av = 0.0_wp
    1972                        ENDIF
    1973                     ENDIF
    19741815
    19751816                CASE ( 'usm_wshf' )
     
    22182059           
    22192060           SELECT CASE ( TRIM( var ) )
    2220                
    2221                 CASE ( 'usm_rad_net' )
    2222 !--                 array of complete radiation balance
    2223                     IF ( l == -1 ) THEN
    2224                        DO  m = 1, surf_usm_h%ns
    2225                           surf_usm_h%rad_net_av(m) =                              &
    2226                                              surf_usm_h%rad_net_av(m) +           &
    2227                                              surf_usm_h%rad_net_l(m)
    2228                        ENDDO
    2229                     ELSE
    2230                        DO  m = 1, surf_usm_v(l)%ns
    2231                           surf_usm_v(l)%rad_net_av(m) =                        &
    2232                                           surf_usm_v(l)%rad_net_av(m) +        &
    2233                                           surf_usm_v(l)%rad_net_l(m)
    2234                        ENDDO
    2235                     ENDIF
    2236 
    2237                 CASE ( 'usm_rad_insw' )
    2238 !--                 array of sw radiation falling to surface after i-th reflection
    2239                     DO l = 1, nsurfl
    2240                         IF ( surfl(id,l) == idsint )  THEN
    2241                             surfinsw_av(l) = surfinsw_av(l) + surfinsw(l)
    2242                         ENDIF
    2243                     ENDDO
    2244                              
    2245                 CASE ( 'usm_rad_inlw' )
    2246 !--                 array of lw radiation falling to surface after i-th reflection
    2247                     DO l = 1, nsurfl
    2248                         IF ( surfl(id,l) == idsint )  THEN
    2249                             surfinlw_av(l) = surfinlw_av(l) + surfinlw(l)
    2250                         ENDIF
    2251                     ENDDO
    2252                    
    2253                 CASE ( 'usm_rad_inswdir' )
    2254 !--                 array of direct sw radiation falling to surface from sun
    2255                     DO l = 1, nsurfl
    2256                         IF ( surfl(id,l) == idsint )  THEN
    2257                             surfinswdir_av(l) = surfinswdir_av(l) + surfinswdir(l)
    2258                         ENDIF
    2259                     ENDDO
    2260                    
    2261                 CASE ( 'usm_rad_inswdif' )
    2262 !--                 array of difusion sw radiation falling to surface from sky and borders of the domain
    2263                     DO l = 1, nsurfl
    2264                         IF ( surfl(id,l) == idsint )  THEN
    2265                             surfinswdif_av(l) = surfinswdif_av(l) + surfinswdif(l)
    2266                         ENDIF
    2267                     ENDDO
    2268                    
    2269                 CASE ( 'usm_rad_inswref' )
    2270 !--                 array of sw radiation falling to surface from reflections
    2271                     DO l = 1, nsurfl
    2272                         IF ( surfl(id,l) == idsint )  THEN
    2273                             surfinswref_av(l) = surfinswref_av(l) + surfinsw(l) - &
    2274                                                 surfinswdir(l) - surfinswdif(l)
    2275                         ENDIF
    2276                     ENDDO
    2277 
    2278                    
    2279                 CASE ( 'usm_rad_inlwdif' )
    2280 !--                 array of sw radiation falling to surface after i-th reflection
    2281                     DO l = 1, nsurfl
    2282                         IF ( surfl(id,l) == idsint )  THEN
    2283                             surfinlwdif_av(l) = surfinlwdif_av(l) + surfinlwdif(l)
    2284                         ENDIF
    2285                     ENDDO
    2286 !                     
    2287                 CASE ( 'usm_rad_inlwref' )
    2288 !--                 array of lw radiation falling to surface from reflections
    2289                     DO l = 1, nsurfl
    2290                         IF ( surfl(id,l) == idsint )  THEN
    2291                             surfinlwref_av(l) = surfinlwref_av(l) + &
    2292                                                 surfinlw(l) - surfinlwdif(l)
    2293                         ENDIF
    2294                     ENDDO
    2295                    
    2296                 CASE ( 'usm_rad_outsw' )
    2297 !--                 array of sw radiation emitted from surface after i-th reflection
    2298                     DO l = 1, nsurfl
    2299                         IF ( surfl(id,l) == idsint )  THEN
    2300                             surfoutsw_av(l) = surfoutsw_av(l) + surfoutsw(l)
    2301                         ENDIF
    2302                     ENDDO
    2303                    
    2304                 CASE ( 'usm_rad_outlw' )
    2305 !--                 array of lw radiation emitted from surface after i-th reflection
    2306                     DO l = 1, nsurfl
    2307                         IF ( surfl(id,l) == idsint )  THEN
    2308                             surfoutlw_av(l) = surfoutlw_av(l) + surfoutlw(l)
    2309                         ENDIF
    2310                     ENDDO
    2311                    
    2312                 CASE ( 'usm_rad_ressw' )
    2313 !--                 array of residua of sw radiation absorbed in surface after last reflection
    2314                     DO l = 1, nsurfl
    2315                         IF ( surfl(id,l) == idsint )  THEN
    2316                             surfins_av(l) = surfins_av(l) + surfins(l)
    2317                         ENDIF
    2318                     ENDDO
    2319                                    
    2320                 CASE ( 'usm_rad_reslw' )
    2321 !--                 array of residua of lw radiation absorbed in surface after last reflection
    2322                     DO l = 1, nsurfl
    2323                         IF ( surfl(id,l) == idsint )  THEN
    2324                             surfinl_av(l) = surfinl_av(l) + surfinl(l)
    2325                         ENDIF
    2326                     ENDDO
    2327                    
    2328                 CASE ( 'usm_rad_pc_inlw' )
    2329                     pcbinlw_av(:) = pcbinlw_av(:) + pcbinlw(:)
    2330                    
    2331                 CASE ( 'usm_rad_pc_insw' )
    2332                     pcbinsw_av(:) = pcbinsw_av(:) + pcbinsw(:)
    2333                    
    2334                 CASE ( 'usm_rad_pc_inswdir' )
    2335                     pcbinswdir_av(:) = pcbinswdir_av(:) + pcbinswdir(:)
    2336                    
    2337                 CASE ( 'usm_rad_pc_inswdif' )
    2338                     pcbinswdif_av(:) = pcbinswdif_av(:) + pcbinswdif(:)
    2339                    
    2340                 CASE ( 'usm_rad_pc_inswref' )
    2341                     pcbinswref_av(:) = pcbinswref_av(:) + pcbinsw(:)     &
    2342                                                         - pcbinswdir(:)  &
    2343                                                         - pcbinswdif(:)
    2344                    
    2345                 CASE ( 'usm_rad_hf' )
    2346 !--                 array of heat flux from radiation for surfaces after i-th reflection
    2347                     IF ( l == -1 ) THEN
    2348                        DO  m = 1, surf_usm_h%ns
    2349                           surf_usm_h%surfhf_av(m) =                               &
    2350                                              surf_usm_h%surfhf_av(m) +            &
    2351                                              surf_usm_h%surfhf(m)
    2352                        ENDDO
    2353                     ELSE
    2354                        DO  m = 1, surf_usm_v(l)%ns
    2355                           surf_usm_v(l)%surfhf_av(m) =                         &
    2356                                           surf_usm_v(l)%surfhf_av(m) +         &
    2357                                           surf_usm_v(l)%surfhf(m)
    2358                        ENDDO
    2359                     ENDIF
    2360                    
     2061
    23612062                CASE ( 'usm_wshf' )
    23622063!--                 array of sensible heat flux from surfaces (land, roof, wall)
     
    26392340           
    26402341           SELECT CASE ( TRIM( var ) )
    2641                
    2642                 CASE ( 'usm_rad_net' )
    2643 !--                 array of complete radiation balance
    2644                     IF ( l == -1 ) THEN
    2645                        DO  m = 1, surf_usm_h%ns
    2646                           surf_usm_h%rad_net_av(m) =                              &
    2647                                              surf_usm_h%rad_net_av(m) /           &
    2648                                              REAL( average_count_3d, kind=wp )
    2649                        ENDDO
    2650                     ELSE
    2651                        DO  m = 1, surf_usm_v(l)%ns
    2652                           surf_usm_v(l)%rad_net_av(m) =                        &
    2653                                           surf_usm_v(l)%rad_net_av(m) /        &
    2654                                           REAL( average_count_3d, kind=wp )
    2655                        ENDDO
    2656                     ENDIF
    2657                    
    2658                 CASE ( 'usm_rad_insw' )
    2659 !--                 array of sw radiation falling to surface after i-th reflection
    2660                     DO l = 1, nsurfl
    2661                         IF ( surfl(id,l) == idsint )  THEN
    2662                             surfinsw_av(l) = surfinsw_av(l) / REAL( average_count_3d, kind=wp )
    2663                         ENDIF
    2664                     ENDDO
    2665                              
    2666                 CASE ( 'usm_rad_inlw' )
    2667 !--                 array of lw radiation falling to surface after i-th reflection
    2668                     DO l = 1, nsurfl
    2669                         IF ( surfl(id,l) == idsint )  THEN
    2670                             surfinlw_av(l) = surfinlw_av(l) / REAL( average_count_3d, kind=wp )
    2671                         ENDIF
    2672                     ENDDO
    2673                    
    2674                 CASE ( 'usm_rad_inswdir' )
    2675 !--                 array of direct sw radiation falling to surface from sun
    2676                     DO l = 1, nsurfl
    2677                         IF ( surfl(id,l) == idsint )  THEN
    2678                             surfinswdir_av(l) = surfinswdir_av(l) / REAL( average_count_3d, kind=wp )
    2679                         ENDIF
    2680                     ENDDO
    2681                    
    2682                 CASE ( 'usm_rad_inswdif' )
    2683 !--                 array of difusion sw radiation falling to surface from sky and borders of the domain
    2684                     DO l = 1, nsurfl
    2685                         IF ( surfl(id,l) == idsint )  THEN
    2686                             surfinswdif_av(l) = surfinswdif_av(l) / REAL( average_count_3d, kind=wp )
    2687                         ENDIF
    2688                     ENDDO
    2689                    
    2690                 CASE ( 'usm_rad_inswref' )
    2691 !--                 array of sw radiation falling to surface from reflections
    2692                     DO l = 1, nsurfl
    2693                         IF ( surfl(id,l) == idsint )  THEN
    2694                             surfinswref_av(l) = surfinswref_av(l) / REAL( average_count_3d, kind=wp )
    2695                         ENDIF
    2696                     ENDDO
    2697                    
    2698                 CASE ( 'usm_rad_inlwdif' )
    2699 !--                 array of sw radiation falling to surface after i-th reflection
    2700                     DO l = 1, nsurfl
    2701                         IF ( surfl(id,l) == idsint )  THEN
    2702                             surfinlwdif_av(l) = surfinlwdif_av(l) / REAL( average_count_3d, kind=wp )
    2703                         ENDIF
    2704                     ENDDO
    2705                    
    2706                 CASE ( 'usm_rad_inlwref' )
    2707 !--                 array of lw radiation falling to surface from reflections
    2708                     DO l = 1, nsurfl
    2709                         IF ( surfl(id,l) == idsint )  THEN
    2710                             surfinlwref_av(l) = surfinlwref_av(l) / REAL( average_count_3d, kind=wp )
    2711                         ENDIF
    2712                     ENDDO
    2713                    
    2714                 CASE ( 'usm_rad_outsw' )
    2715 !--                 array of sw radiation emitted from surface after i-th reflection
    2716                     DO l = 1, nsurfl
    2717                         IF ( surfl(id,l) == idsint )  THEN
    2718                             surfoutsw_av(l) = surfoutsw_av(l) / REAL( average_count_3d, kind=wp )
    2719                         ENDIF
    2720                     ENDDO
    2721                    
    2722                 CASE ( 'usm_rad_outlw' )
    2723 !--                 array of lw radiation emitted from surface after i-th reflection
    2724                     DO l = 1, nsurfl
    2725                         IF ( surfl(id,l) == idsint )  THEN
    2726                             surfoutlw_av(l) = surfoutlw_av(l) / REAL( average_count_3d, kind=wp )
    2727                         ENDIF
    2728                     ENDDO
    2729                    
    2730                 CASE ( 'usm_rad_ressw' )
    2731 !--                 array of residua of sw radiation absorbed in surface after last reflection
    2732                     DO l = 1, nsurfl
    2733                         IF ( surfl(id,l) == idsint )  THEN
    2734                             surfins_av(l) = surfins_av(l) / REAL( average_count_3d, kind=wp )
    2735                         ENDIF
    2736                     ENDDO
    2737                                    
    2738                 CASE ( 'usm_rad_reslw' )
    2739 !--                 array of residua of lw radiation absorbed in surface after last reflection
    2740                     DO l = 1, nsurfl
    2741                         IF ( surfl(id,l) == idsint )  THEN
    2742                             surfinl_av(l) = surfinl_av(l) / REAL( average_count_3d, kind=wp )
    2743                         ENDIF
    2744                     ENDDO
    2745                    
    2746                 CASE ( 'usm_rad_pc_inlw' )
    2747                     pcbinlw_av(:) = pcbinlw_av(:) / REAL( average_count_3d, kind=wp )
    2748                    
    2749                 CASE ( 'usm_rad_pc_insw' )
    2750                     pcbinsw_av(:) = pcbinsw_av(:) / REAL( average_count_3d, kind=wp )
    2751                    
    2752                 CASE ( 'usm_rad_pc_inswdir' )
    2753                     pcbinswdir_av(:) = pcbinswdir_av(:) / REAL( average_count_3d, kind=wp )
    2754                    
    2755                 CASE ( 'usm_rad_pc_inswdif' )
    2756                     pcbinswdif_av(:) = pcbinswdif_av(:) / REAL( average_count_3d, kind=wp )
    2757                    
    2758                 CASE ( 'usm_rad_pc_inswref' )
    2759                     pcbinswref_av(:) = pcbinswref_av(:) / REAL( average_count_3d, kind=wp )
    2760                    
    2761                 CASE ( 'usm_rad_hf' )
    2762 !--                 array of heat flux from radiation for surfaces after i-th reflection
    2763                     IF ( l == -1 ) THEN
    2764                        DO  m = 1, surf_usm_h%ns
    2765                           surf_usm_h%surfhf_av(m) =                               &
    2766                                              surf_usm_h%surfhf_av(m) /            &
    2767                                              REAL( average_count_3d, kind=wp )
    2768                        ENDDO
    2769                     ELSE
    2770                        DO  m = 1, surf_usm_v(l)%ns
    2771                           surf_usm_v(l)%surfhf_av(m) =                         &
    2772                                           surf_usm_v(l)%surfhf_av(m) /         &
    2773                                           REAL( average_count_3d, kind=wp )
    2774                        ENDDO
    2775                     ENDIF
    2776                    
     2342
    27772343                CASE ( 'usm_wshf' )
    27782344!--                 array of sensible heat flux from surfaces (land, roof, wall)
     
    31152681        CHARACTER(LEN=2)                              :: ls
    31162682        CHARACTER(LEN=varnamelength)                  :: var          !< TRIM(variable)
    3117         INTEGER(iwp), PARAMETER                       :: nl1 = 31     !< number of directional usm variables
     2683        INTEGER(iwp), PARAMETER                       :: nl1 = 16     !< number of directional usm variables
    31182684        CHARACTER(LEN=varnamelength), DIMENSION(nl1)  :: varlist1 = & !< list of directional usm variables
    3119                   (/'usm_rad_net                   ', &
    3120                     'usm_rad_insw                  ', &
    3121                     'usm_rad_inlw                  ', &
    3122                     'usm_rad_inswdir               ', &
    3123                     'usm_rad_inswdif               ', &
    3124                     'usm_rad_inswref               ', &
    3125                     'usm_rad_inlwdif               ', &
    3126                     'usm_wshf                      ', &
    3127                     'usm_rad_inlwref               ', &
    3128                     'usm_rad_outsw                 ', &
    3129                     'usm_rad_outlw                 ', &
    3130                     'usm_rad_hf                    ', &
    3131                     'usm_rad_ressw                 ', &
    3132                     'usm_rad_reslw                 ', &
     2685                  (/'usm_wshf                      ', &
    31332686                    'usm_wghf                      ', &
    31342687                    'usm_wghf_window               ', &
     
    31452698                    'usm_t_surf_green              ', &
    31462699                    'usm_t_green                   ', &
    3147                     'usm_theta_10cm                ', &
    3148                     'usm_skyvf                     ', &
    3149                     'usm_skyvft                    '/)
    3150 
    3151         INTEGER(iwp), PARAMETER                       :: nl2 = 7      !< number of other variables
    3152         CHARACTER(LEN=varnamelength), DIMENSION(nl2)  :: varlist2 = & !< list of other usm variables
    3153                   (/'usm_svf                       ', &
    3154                     'usm_dif                       ', &
    3155                     'usm_rad_pc_inlw               ', &
    3156                     'usm_rad_pc_insw               ', &
    3157                     'usm_rad_pc_inswdir            ', &
    3158                     'usm_rad_pc_inswdif            ', &
    3159                     'usm_rad_pc_inswref            '/)
    3160 
    3161         INTEGER(iwp), PARAMETER                       :: nl3 = 3      !< number of directional layer usm variables
    3162         CHARACTER(LEN=varnamelength), DIMENSION(nl3)  :: varlist3 = & !< list of directional layer usm variables
     2700                    'usm_theta_10cm                '/)
     2701
     2702        INTEGER(iwp), PARAMETER                       :: nl2 = 3      !< number of directional layer usm variables
     2703        CHARACTER(LEN=varnamelength), DIMENSION(nl2)  :: varlist2 = & !< list of directional layer usm variables
    31632704                  (/'usm_t_wall                    ', &
    31642705                    'usm_t_window                  ', &
     
    31882729        IF ( lfound ) GOTO 10
    31892730!       directional layer variables
    3190         DO i = 1, nl3
     2731        DO i = 1, nl2
    31912732           DO j = 1, nd
    31922733              DO l = nzb_wall, nzt_wall
    31932734                 WRITE(ls,'(A1,I1)') '_',l
    3194                  IF ( TRIM(var) == TRIM(varlist3(i))//TRIM(ls)//TRIM(dirname(j)) ) THEN
     2735                 IF ( TRIM(var) == TRIM(varlist2(i))//TRIM(ls)//TRIM(dirname(j)) ) THEN
    31952736                    lfound = .TRUE.
    31962737                    EXIT
     
    32002741           ENDDO
    32012742        ENDDO
    3202         IF ( lfound ) GOTO 10
    3203 !       other variables
    3204         DO i = 1, nl2
    3205            IF ( TRIM(var) == TRIM(varlist2(i)) ) THEN
    3206               lfound = .TRUE.
    3207               EXIT
    3208            ENDIF
    3209         ENDDO
    32102743        IF ( .NOT.  lfound ) THEN
    32112744           unit = 'illegal'
     
    3214274710      CONTINUE
    32152748
    3216         IF ( var(1:12) == 'usm_rad_net_'  .OR.  var(1:13) == 'usm_rad_insw_'  .OR.        &
    3217              var(1:13) == 'usm_rad_inlw_'  .OR.  var(1:16) == 'usm_rad_inswdir_'  .OR.    &
    3218              var(1:16) == 'usm_rad_inswdif_'  .OR.  var(1:16) == 'usm_rad_inswref_'  .OR. &
    3219              var(1:16) == 'usm_rad_inlwdif_'  .OR.  var(1:16) == 'usm_rad_inlwref_'  .OR. &
    3220              var(1:14) == 'usm_rad_outsw_'  .OR.  var(1:14) == 'usm_rad_outlw_'  .OR.     &
    3221              var(1:14) == 'usm_rad_ressw_'  .OR.  var(1:14) == 'usm_rad_reslw_'  .OR.     &
    3222              var(1:11) == 'usm_rad_hf_'  .OR.                                             &
    3223              var(1:9)  == 'usm_wshf_'  .OR.  var(1:9) == 'usm_wghf_' .OR.                 &
     2749        IF ( var(1:9)  == 'usm_wshf_'  .OR.  var(1:9) == 'usm_wghf_' .OR.                 &
    32242750             var(1:16) == 'usm_wghf_window_' .OR. var(1:15) == 'usm_wghf_green_' .OR.     &
    32252751             var(1:10) == 'usm_iwghf_' .OR. var(1:17) == 'usm_iwghf_window_'    .OR.      &
     
    32342760                  var(1:14) == 'usm_theta_10cm' )  THEN
    32352761            unit = 'K'
    3236         ELSE IF ( var == 'usm_rad_pc_inlw'  .OR.  var == 'usm_rad_pc_insw'  .OR.          &
    3237                   var == 'usm_rad_pc_inswdir'  .OR.  var == 'usm_rad_pc_inswdif'  .OR.    &
    3238                   var == 'usm_rad_pc_inswref' )  THEN
    3239             unit = 'W'
    3240         ELSE IF ( var(1:9) == 'usm_surfz'  .OR.  var(1:7) == 'usm_svf'  .OR.              &
    3241                   var(1:7) == 'usm_dif'  .OR.  var(1:11) == 'usm_surfcat'  .OR.           &
    3242                   var(1:11) == 'usm_surfalb'  .OR.  var(1:12) == 'usm_surfemis'  .OR.     &
    3243                   var(1:9) == 'usm_skyvf' .OR. var(1:9) == 'usm_skyvft' )  THEN
     2762        ELSE IF ( var(1:9) == 'usm_surfz'  .OR.  var(1:11) == 'usm_surfcat'  .OR.         &
     2763                  var(1:11) == 'usm_surfalb'  .OR.  var(1:12) == 'usm_surfemis'  )  THEN
    32442764            unit = '1'
    32452765        ELSE
     
    33362856        INTEGER(iwp), DIMENSION(0:nd-1), PARAMETER             :: diridx =  (/       -1,        1,        0,        3,        2 /)
    33372857                                                                     !< index for surf_*_v: 0:3 = (North, South, East, West)
    3338         INTEGER(iwp), DIMENSION(0:nd-1)                        :: dirstart
    3339         INTEGER(iwp), DIMENSION(0:nd-1)                        :: dirend
    33402858        INTEGER(iwp)                                           :: ids,idsint,idsidx,isurf,isvf,isurfs,isurflt,ipcgb
    33412859        INTEGER(iwp)                                           :: is,js,ks,i,j,k,iwl,istat, l, m
    3342 
    3343         dirstart = (/ startland, startwall, startwall, startwall, startwall /)
    3344         dirend = (/ endland, endwall, endwall, endwall, endwall /)
    33452860
    33462861        found = .TRUE.
     
    33882903            READ(var(9:9), '(I1)', iostat=istat ) iwl
    33892904            IF ( istat == 0  .AND.  iwl >= nzb_wall  .AND.  iwl <= nzt_wall )  THEN
    3390                 var = var(1:7)
    3391             ENDIF
    3392         ENDIF
    3393         IF ( (var(1:8) == 'usm_svf_'  .OR.  var(1:8) == 'usm_dif_')  .AND.  len(TRIM(var)) >= 13 )  THEN
    3394 !--         svf values to particular surface
    3395             surfid = var(9:)
    3396             i = index(surfid,'_')
    3397             j = index(surfid(i+1:),'_')
    3398             READ(surfid(1:i-1),*, iostat=istat ) is
    3399             IF ( istat == 0 )  THEN
    3400                 READ(surfid(i+1:i+j-1),*, iostat=istat ) js
    3401             ENDIF
    3402             IF ( istat == 0 )  THEN
    3403                 READ(surfid(i+j+1:),*, iostat=istat ) ks
    3404             ENDIF
    3405             IF ( istat == 0 )  THEN
    34062905                var = var(1:7)
    34072906            ENDIF
     
    35253024              ENDIF
    35263025
    3527           CASE ( 'usm_skyvf' )
    3528 !--           sky view factor
    3529               DO isurf = dirstart(ids), dirend(ids)
    3530                  IF ( surfl(id,isurf) == idsint )  THEN
    3531                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = skyvf(isurf)
    3532                  ENDIF
    3533               ENDDO
    3534              
    3535           CASE ( 'usm_skyvft' )
    3536 !--           sky view factor
    3537               DO isurf = dirstart(ids), dirend(ids)
    3538                  IF ( surfl(id,isurf) == ids )  THEN
    3539                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = skyvft(isurf)
    3540                  ENDIF
    3541               ENDDO
    3542 
    3543 !
    3544 !-- Not adjusted so far             
    3545           CASE ( 'usm_svf', 'usm_dif' )
    3546 !--           shape view factors or iradiance factors to selected surface
    3547               IF ( TRIM(var)=='usm_svf' )  THEN
    3548                   k = 1
    3549               ELSE
    3550                   k = 2
    3551               ENDIF
    3552               DO isvf = 1, nsvfl
    3553                   isurflt = svfsurf(1, isvf)
    3554                   isurfs = svfsurf(2, isvf)
    3555                              
    3556                   IF ( surf(ix,isurfs) == is  .AND.  surf(iy,isurfs) == js  .AND.       &
    3557                        surf(iz,isurfs) == ks  .AND.  surf(id,isurfs) == idsint )  THEN
    3558   !--                 correct source surface
    3559                       temp_pf(surfl(iz,isurflt),surfl(iy,isurflt),surfl(ix,isurflt)) = svf(k,isvf)
    3560                   ENDIF
    3561               ENDDO
    3562 
    3563           CASE ( 'usm_rad_net' )
    3564 !--           array of complete radiation balance
    3565               IF ( av == 0 )  THEN
    3566                  IF ( idsint == iup_u )  THEN
    3567                     DO  m = 1, surf_usm_h%ns
    3568                        i = surf_usm_h%i(m)
    3569                        j = surf_usm_h%j(m)
    3570                        k = surf_usm_h%k(m)
    3571                        temp_pf(k,j,i) = surf_usm_h%rad_net_l(m)
    3572                     ENDDO
    3573                  ELSE
    3574                     l = idsidx
    3575                     DO  m = 1, surf_usm_v(l)%ns
    3576                        i = surf_usm_v(l)%i(m)
    3577                        j = surf_usm_v(l)%j(m)
    3578                        k = surf_usm_v(l)%k(m)
    3579                        temp_pf(k,j,i) = surf_usm_v(l)%rad_net_l(m)
    3580                     ENDDO
    3581                  ENDIF
    3582               ELSE
    3583                  IF ( idsint == iup_u )  THEN
    3584                     DO  m = 1, surf_usm_h%ns
    3585                        i = surf_usm_h%i(m)
    3586                        j = surf_usm_h%j(m)
    3587                        k = surf_usm_h%k(m)
    3588                        temp_pf(k,j,i) = surf_usm_h%rad_net_av(m)
    3589                     ENDDO
    3590                  ELSE
    3591                     l = idsidx
    3592                     DO  m = 1, surf_usm_v(l)%ns
    3593                        i = surf_usm_v(l)%i(m)
    3594                        j = surf_usm_v(l)%j(m)
    3595                        k = surf_usm_v(l)%k(m)
    3596                        temp_pf(k,j,i) = surf_usm_v(l)%rad_net_av(m)
    3597                     ENDDO
    3598                  ENDIF
    3599               ENDIF
    3600 
    3601           CASE ( 'usm_rad_insw' )
    3602 !--           array of sw radiation falling to surface after i-th reflection
    3603               DO isurf = dirstart(ids), dirend(ids)
    3604                  IF ( surfl(id,isurf) == idsint )  THEN
    3605                    IF ( av == 0 )  THEN
    3606                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinsw(isurf)
    3607                    ELSE
    3608                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinsw_av(isurf)
    3609                    ENDIF
    3610                  ENDIF
    3611               ENDDO
    3612 
    3613           CASE ( 'usm_rad_inlw' )
    3614 !--           array of lw radiation falling to surface after i-th reflection
    3615               DO isurf = dirstart(ids), dirend(ids)
    3616                  IF ( surfl(id,isurf) == idsint )  THEN
    3617                    IF ( av == 0 )  THEN
    3618                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinlw(isurf)
    3619                    ELSE
    3620                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinlw_av(isurf)
    3621                    ENDIF
    3622                  ENDIF
    3623               ENDDO
    3624 
    3625           CASE ( 'usm_rad_inswdir' )
    3626 !--           array of direct sw radiation falling to surface from sun
    3627               DO isurf = dirstart(ids), dirend(ids)
    3628                  IF ( surfl(id,isurf) == idsint )  THEN
    3629                    IF ( av == 0 )  THEN
    3630                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinswdir(isurf)
    3631                    ELSE
    3632                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinswdir_av(isurf)
    3633                    ENDIF
    3634                  ENDIF
    3635               ENDDO
    3636 
    3637           CASE ( 'usm_rad_inswdif' )
    3638 !--           array of difusion sw radiation falling to surface from sky and borders of the domain
    3639               DO isurf = dirstart(ids), dirend(ids)
    3640                  IF ( surfl(id,isurf) == idsint )  THEN
    3641                    IF ( av == 0 )  THEN
    3642                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinswdif(isurf)
    3643                    ELSE
    3644                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinswdif_av(isurf)
    3645                    ENDIF
    3646                  ENDIF
    3647               ENDDO
    3648 
    3649           CASE ( 'usm_rad_inswref' )
    3650 !--           array of sw radiation falling to surface from reflections
    3651               DO isurf = dirstart(ids), dirend(ids)
    3652                  IF ( surfl(id,isurf) == idsint )  THEN
    3653                    IF ( av == 0 )  THEN
    3654                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = &
    3655                        surfinsw(isurf) - surfinswdir(isurf) - surfinswdif(isurf)
    3656                    ELSE
    3657                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinswref_av(isurf)
    3658                    ENDIF
    3659                  ENDIF
    3660               ENDDO
    3661 
    3662           CASE ( 'usm_rad_inlwdif' )
    3663 !--           array of difusion lw radiation falling to surface from sky and borders of the domain
    3664               DO isurf = dirstart(ids), dirend(ids)
    3665                  IF ( surfl(id,isurf) == idsint )  THEN
    3666                    IF ( av == 0 )  THEN
    3667                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinlwdif(isurf)
    3668                    ELSE
    3669                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinlwdif_av(isurf)
    3670                    ENDIF
    3671                  ENDIF
    3672               ENDDO
    3673 
    3674           CASE ( 'usm_rad_inlwref' )
    3675 !--           array of lw radiation falling to surface from reflections
    3676               DO isurf = dirstart(ids), dirend(ids)
    3677                  IF ( surfl(id,isurf) == idsint )  THEN
    3678                    IF ( av == 0 )  THEN
    3679                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinlw(isurf) - surfinlwdif(isurf)
    3680                    ELSE
    3681                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinlwref_av(isurf)
    3682                    ENDIF
    3683                  ENDIF
    3684               ENDDO
    3685 
    3686           CASE ( 'usm_rad_outsw' )
    3687 !--           array of sw radiation emitted from surface after i-th reflection
    3688               DO isurf = dirstart(ids), dirend(ids)
    3689                  IF ( surfl(id,isurf) == idsint )  THEN
    3690                    IF ( av == 0 )  THEN
    3691                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfoutsw(isurf)
    3692                    ELSE
    3693                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfoutsw_av(isurf)
    3694                    ENDIF
    3695                  ENDIF
    3696               ENDDO
    3697 
    3698           CASE ( 'usm_rad_outlw' )
    3699 !--           array of lw radiation emitted from surface after i-th reflection
    3700               DO isurf = dirstart(ids), dirend(ids)
    3701                  IF ( surfl(id,isurf) == idsint )  THEN
    3702                    IF ( av == 0 )  THEN
    3703                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfoutlw(isurf)
    3704                    ELSE
    3705                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfoutlw_av(isurf)
    3706                    ENDIF
    3707                  ENDIF
    3708               ENDDO
    3709 
    3710           CASE ( 'usm_rad_ressw' )
    3711 !--           average of array of residua of sw radiation absorbed in surface after last reflection
    3712               DO isurf = dirstart(ids), dirend(ids)
    3713                  IF ( surfl(id,isurf) == idsint )  THEN
    3714                    IF ( av == 0 )  THEN
    3715                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfins(isurf)
    3716                    ELSE
    3717                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfins_av(isurf)
    3718                    ENDIF
    3719                  ENDIF
    3720               ENDDO
    3721 
    3722           CASE ( 'usm_rad_reslw' )
    3723 !--           average of array of residua of lw radiation absorbed in surface after last reflection
    3724               DO isurf = dirstart(ids), dirend(ids)
    3725                  IF ( surfl(id,isurf) == idsint )  THEN
    3726                    IF ( av == 0 )  THEN
    3727                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinl(isurf)
    3728                    ELSE
    3729                      temp_pf(surfl(iz,isurf),surfl(iy,isurf),surfl(ix,isurf)) = surfinl_av(isurf)
    3730                    ENDIF
    3731                  ENDIF
    3732               ENDDO
    3733 
    3734           CASE ( 'usm_rad_pc_inlw' )
    3735 !--           array of lw radiation absorbed by plant canopy
    3736               DO ipcgb = 1, npcbl
    3737                   IF ( av == 0 )  THEN
    3738                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinlw(ipcgb)
    3739                   ELSE
    3740                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinlw_av(ipcgb)
    3741                   ENDIF
    3742               ENDDO
    3743 
    3744           CASE ( 'usm_rad_pc_insw' )
    3745 !--           array of sw radiation absorbed by plant canopy
    3746               DO ipcgb = 1, npcbl
    3747                   IF ( av == 0 )  THEN
    3748                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinsw(ipcgb)
    3749                   ELSE
    3750                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinsw_av(ipcgb)
    3751                   ENDIF
    3752               ENDDO
    3753 
    3754           CASE ( 'usm_rad_pc_inswdir' )
    3755 !--           array of direct sw radiation absorbed by plant canopy
    3756               DO ipcgb = 1, npcbl
    3757                   IF ( av == 0 )  THEN
    3758                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdir(ipcgb)
    3759                   ELSE
    3760                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdir_av(ipcgb)
    3761                   ENDIF
    3762               ENDDO
    3763 
    3764           CASE ( 'usm_rad_pc_inswdif' )
    3765 !--           array of diffuse sw radiation absorbed by plant canopy
    3766               DO ipcgb = 1, npcbl
    3767                   IF ( av == 0 )  THEN
    3768                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdif(ipcgb)
    3769                   ELSE
    3770                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdif_av(ipcgb)
    3771                   ENDIF
    3772               ENDDO
    3773 
    3774           CASE ( 'usm_rad_pc_inswref' )
    3775 !--           array of reflected sw radiation absorbed by plant canopy
    3776               DO ipcgb = 1, npcbl
    3777                   IF ( av == 0 )  THEN
    3778                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinsw(ipcgb)      &
    3779                                                                               - pcbinswdir(ipcgb) &
    3780                                                                               - pcbinswdif(ipcgb)
    3781                   ELSE
    3782                       temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswref_av(ipcgb)
    3783                   ENDIF
    3784               ENDDO
    3785  
    3786           CASE ( 'usm_rad_hf' )
    3787 !--           array of heat flux from radiation for surfaces after all reflections
    3788               IF ( av == 0 )  THEN
    3789                  IF ( idsint == iup_u )  THEN
    3790                     DO  m = 1, surf_usm_h%ns
    3791                        i = surf_usm_h%i(m)
    3792                        j = surf_usm_h%j(m)
    3793                        k = surf_usm_h%k(m)
    3794                        temp_pf(k,j,i) = surf_usm_h%surfhf(m)
    3795                     ENDDO
    3796                  ELSE
    3797                     l = idsidx
    3798                     DO  m = 1, surf_usm_v(l)%ns
    3799                        i = surf_usm_v(l)%i(m)
    3800                        j = surf_usm_v(l)%j(m)
    3801                        k = surf_usm_v(l)%k(m)
    3802                        temp_pf(k,j,i) = surf_usm_v(l)%surfhf(m)
    3803                     ENDDO
    3804                  ENDIF
    3805               ELSE
    3806                  IF ( idsint == iup_u )  THEN
    3807                     DO  m = 1, surf_usm_h%ns
    3808                        i = surf_usm_h%i(m)
    3809                        j = surf_usm_h%j(m)
    3810                        k = surf_usm_h%k(m)
    3811                        temp_pf(k,j,i) = surf_usm_h%surfhf_av(m)
    3812                     ENDDO
    3813                  ELSE
    3814                     l = idsidx
    3815                     DO  m = 1, surf_usm_v(l)%ns
    3816                        i = surf_usm_v(l)%i(m)
    3817                        j = surf_usm_v(l)%j(m)
    3818                        k = surf_usm_v(l)%k(m)
    3819                        temp_pf(k,j,i) = surf_usm_v(l)%surfhf_av(m)
    3820                     ENDDO
    3821                  ENDIF
    3822               ENDIF
    3823  
    38243026          CASE ( 'usm_wshf' )
    38253027!--           array of sensible heat flux from surfaces
     
    39753177              ENDIF
    39763178
    3977 
    3978 
    3979 
    39803179          CASE ( 'usm_wghf' )
    39813180!--           array of heat flux from ground (land, wall, roof)
     
    45273726
    45283727        var = TRIM(variable)
    4529         IF ( var(1:12) == 'usm_rad_net_'  .OR.  var(1:13) == 'usm_rad_insw_'  .OR.          &
    4530              var(1:13) == 'usm_rad_inlw_'  .OR.  var(1:16) == 'usm_rad_inswdir_'  .OR.      &
    4531              var(1:16) == 'usm_rad_inswdif_'  .OR.  var(1:16) == 'usm_rad_inswref_'  .OR.   &
    4532              var(1:16) == 'usm_rad_inlwdif_'  .OR.  var(1:16) == 'usm_rad_inlwref_'  .OR.   &
    4533              var(1:14) == 'usm_rad_outsw_'  .OR.  var(1:14) == 'usm_rad_outlw_'  .OR.       &
    4534              var(1:14) == 'usm_rad_ressw_'  .OR.  var(1:14) == 'usm_rad_reslw_'  .OR.       &
    4535              var(1:11) == 'usm_rad_hf_'  .OR.  var == 'usm_rad_pc_inlw'  .OR.               &
    4536              var == 'usm_rad_pc_insw'  .OR.  var == 'usm_rad_pc_inswdir'  .OR.              &
    4537              var == 'usm_rad_pc_inswdif'  .OR.  var == 'usm_rad_pc_inswref'  .OR.           &
    4538              var(1:9) == 'usm_wshf_'  .OR.  var(1:9) == 'usm_wghf_'  .OR.                   &
     3728        IF ( var(1:9) == 'usm_wshf_'  .OR.  var(1:9) == 'usm_wghf_'  .OR.                   &
    45393729             var(1:16) == 'usm_wghf_window_'  .OR. var(1:15) == 'usm_wghf_green_' .OR.      &
    45403730             var(1:10) == 'usm_iwghf_'  .OR. var(1:17) == 'usm_iwghf_window_' .OR.          &
     
    45453735             var(1:16) == 'usm_t_surf_green'  .OR. var(1:11) == 'usm_t_green' .OR.          &
    45463736             var(1:15) == 'usm_theta_10cm' .OR.                                             &
    4547              var(1:9) == 'usm_surfz'  .OR.  var(1:7) == 'usm_svf'  .OR.                     &
    4548              var(1:7) == 'usm_dif'  .OR.  var(1:11) == 'usm_surfcat'  .OR.                  &
     3737             var(1:9) == 'usm_surfz'  .OR.  var(1:11) == 'usm_surfcat'  .OR.                  &
    45493738             var(1:11) == 'usm_surfalb'  .OR.  var(1:12) == 'usm_surfemis'  .OR.            &
    4550              var(1:16) == 'usm_surfwintrans'  .OR. var(1:7) == 'usm_swc' .OR.               &
    4551              var(1:9) == 'usm_skyvf' .OR. var(1:9) == 'usm_skyvft' ) THEN
     3739             var(1:16) == 'usm_surfwintrans'  .OR. var(1:7) == 'usm_swc' ) THEN
    45523740
    45533741            found = .TRUE.
     
    101769364          CALL wrd_write_string( 't_green_v(' // dum // ')' )
    101779365          WRITE ( 14 )  t_green_v(l)%t
    10178 !        
     9366       
    101799367       ENDDO
    101809368
Note: See TracChangeset for help on using the changeset viewer.