Ignore:
Timestamp:
Mar 4, 2020 7:20:35 PM (5 years ago)
Author:
suehring
Message:

Change order of dimension in surface arrays %frac, %emissivity and %albedo to allow for better vectorization in the radiation interactions; Set back turbulent length scale to 8 x grid spacing in the parametrized mode for the synthetic turbulence generator (was accidentally changed in last commit)

File:
1 edited

Legend:

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

    r4429 r4441  
    2323! Current revisions:
    2424! ------------------
    25 !
     25! - Change order of dimension in surface arrays %frac, %emissivity and %albedo
     26!   to allow for better vectorization in the radiation interactions.
     27! - Minor formatting issues
    2628!
    2729! Former revisions:
     
    18311833!--       via namelist paramter, unless not already allocated.
    18321834          IF ( .NOT. ALLOCATED(surf_lsm_h%albedo) )  THEN
    1833              ALLOCATE( surf_lsm_h%albedo(0:2,1:surf_lsm_h%ns)     )
     1835             ALLOCATE( surf_lsm_h%albedo(1:surf_lsm_h%ns,0:2)     )
    18341836             surf_lsm_h%albedo    = albedo
    18351837          ENDIF
    18361838          IF ( .NOT. ALLOCATED(surf_usm_h%albedo) )  THEN
    1837              ALLOCATE( surf_usm_h%albedo(0:2,1:surf_usm_h%ns)     )
     1839             ALLOCATE( surf_usm_h%albedo(1:surf_usm_h%ns,0:2)     )
    18381840             surf_usm_h%albedo    = albedo
    18391841          ENDIF
     
    18411843          DO  l = 0, 3
    18421844             IF ( .NOT. ALLOCATED( surf_lsm_v(l)%albedo ) )  THEN
    1843                 ALLOCATE( surf_lsm_v(l)%albedo(0:2,1:surf_lsm_v(l)%ns) )
     1845                ALLOCATE( surf_lsm_v(l)%albedo(1:surf_lsm_v(l)%ns,0:2) )
    18441846                surf_lsm_v(l)%albedo = albedo
    18451847             ENDIF
    18461848             IF ( .NOT. ALLOCATED( surf_usm_v(l)%albedo ) )  THEN
    1847                 ALLOCATE( surf_usm_v(l)%albedo(0:2,1:surf_usm_v(l)%ns) )
     1849                ALLOCATE( surf_usm_v(l)%albedo(1:surf_usm_v(l)%ns,0:2) )
    18481850                surf_usm_v(l)%albedo = albedo
    18491851             ENDIF
     
    18551857!--       albedo won't be overwritten.
    18561858          DO  m = 1, surf_lsm_h%ns
    1857              IF ( surf_lsm_h%albedo_type(ind_veg_wall,m) /= 0 )                &
    1858                 surf_lsm_h%albedo(ind_veg_wall,m) =                            &
    1859                            albedo_pars(0,surf_lsm_h%albedo_type(ind_veg_wall,m))
    1860              IF ( surf_lsm_h%albedo_type(ind_pav_green,m) /= 0 )               &
    1861                 surf_lsm_h%albedo(ind_pav_green,m) =                           &
    1862                            albedo_pars(0,surf_lsm_h%albedo_type(ind_pav_green,m))
    1863              IF ( surf_lsm_h%albedo_type(ind_wat_win,m) /= 0 )                 &
    1864                 surf_lsm_h%albedo(ind_wat_win,m) =                             &
    1865                            albedo_pars(0,surf_lsm_h%albedo_type(ind_wat_win,m))
     1859             IF ( surf_lsm_h%albedo_type(m,ind_veg_wall) /= 0 )                &
     1860                surf_lsm_h%albedo(m,ind_veg_wall) =                            &
     1861                           albedo_pars(0,surf_lsm_h%albedo_type(m,ind_veg_wall))
     1862             IF ( surf_lsm_h%albedo_type(m,ind_pav_green) /= 0 )               &
     1863                surf_lsm_h%albedo(m,ind_pav_green) =                           &
     1864                           albedo_pars(0,surf_lsm_h%albedo_type(m,ind_pav_green))
     1865             IF ( surf_lsm_h%albedo_type(m,ind_wat_win) /= 0 )                 &
     1866                surf_lsm_h%albedo(m,ind_wat_win) =                             &
     1867                           albedo_pars(0,surf_lsm_h%albedo_type(m,ind_wat_win))
    18661868          ENDDO
    18671869          DO  m = 1, surf_usm_h%ns
    1868              IF ( surf_usm_h%albedo_type(ind_veg_wall,m) /= 0 )                &
    1869                 surf_usm_h%albedo(ind_veg_wall,m) =                            &
    1870                            albedo_pars(0,surf_usm_h%albedo_type(ind_veg_wall,m))
    1871              IF ( surf_usm_h%albedo_type(ind_pav_green,m) /= 0 )               &
    1872                 surf_usm_h%albedo(ind_pav_green,m) =                           &
    1873                            albedo_pars(0,surf_usm_h%albedo_type(ind_pav_green,m))
    1874              IF ( surf_usm_h%albedo_type(ind_wat_win,m) /= 0 )                 &
    1875                 surf_usm_h%albedo(ind_wat_win,m) =                             &
    1876                            albedo_pars(0,surf_usm_h%albedo_type(ind_wat_win,m))
     1870             IF ( surf_usm_h%albedo_type(m,ind_veg_wall) /= 0 )                &
     1871                surf_usm_h%albedo(m,ind_veg_wall) =                            &
     1872                           albedo_pars(0,surf_usm_h%albedo_type(m,ind_veg_wall))
     1873             IF ( surf_usm_h%albedo_type(m,ind_pav_green) /= 0 )               &
     1874                surf_usm_h%albedo(m,ind_pav_green) =                           &
     1875                           albedo_pars(0,surf_usm_h%albedo_type(m,ind_pav_green))
     1876             IF ( surf_usm_h%albedo_type(m,ind_wat_win) /= 0 )                 &
     1877                surf_usm_h%albedo(m,ind_wat_win) =                             &
     1878                           albedo_pars(0,surf_usm_h%albedo_type(m,ind_wat_win))
    18771879          ENDDO
    18781880
    18791881          DO  l = 0, 3
    18801882             DO  m = 1, surf_lsm_v(l)%ns
    1881                 IF ( surf_lsm_v(l)%albedo_type(ind_veg_wall,m) /= 0 )          &
    1882                    surf_lsm_v(l)%albedo(ind_veg_wall,m) =                      &
    1883                         albedo_pars(0,surf_lsm_v(l)%albedo_type(ind_veg_wall,m))
    1884                 IF ( surf_lsm_v(l)%albedo_type(ind_pav_green,m) /= 0 )         &
    1885                    surf_lsm_v(l)%albedo(ind_pav_green,m) =                     &
    1886                         albedo_pars(0,surf_lsm_v(l)%albedo_type(ind_pav_green,m))
    1887                 IF ( surf_lsm_v(l)%albedo_type(ind_wat_win,m) /= 0 )           &
    1888                    surf_lsm_v(l)%albedo(ind_wat_win,m) =                       &
    1889                         albedo_pars(0,surf_lsm_v(l)%albedo_type(ind_wat_win,m))
     1883                IF ( surf_lsm_v(l)%albedo_type(m,ind_veg_wall) /= 0 )          &
     1884                   surf_lsm_v(l)%albedo(m,ind_veg_wall) =                      &
     1885                        albedo_pars(0,surf_lsm_v(l)%albedo_type(m,ind_veg_wall))
     1886                IF ( surf_lsm_v(l)%albedo_type(m,ind_pav_green) /= 0 )         &
     1887                   surf_lsm_v(l)%albedo(m,ind_pav_green) =                     &
     1888                        albedo_pars(0,surf_lsm_v(l)%albedo_type(m,ind_pav_green))
     1889                IF ( surf_lsm_v(l)%albedo_type(m,ind_wat_win) /= 0 )           &
     1890                   surf_lsm_v(l)%albedo(m,ind_wat_win) =                       &
     1891                        albedo_pars(0,surf_lsm_v(l)%albedo_type(m,ind_wat_win))
    18901892             ENDDO
    18911893             DO  m = 1, surf_usm_v(l)%ns
    1892                 IF ( surf_usm_v(l)%albedo_type(ind_veg_wall,m) /= 0 )          &
    1893                    surf_usm_v(l)%albedo(ind_veg_wall,m) =                      &
    1894                         albedo_pars(0,surf_usm_v(l)%albedo_type(ind_veg_wall,m))
    1895                 IF ( surf_usm_v(l)%albedo_type(ind_pav_green,m) /= 0 )         &
    1896                    surf_usm_v(l)%albedo(ind_pav_green,m) =                     &
    1897                         albedo_pars(0,surf_usm_v(l)%albedo_type(ind_pav_green,m))
    1898                 IF ( surf_usm_v(l)%albedo_type(ind_wat_win,m) /= 0 )           &
    1899                    surf_usm_v(l)%albedo(ind_wat_win,m) =                       &
    1900                         albedo_pars(0,surf_usm_v(l)%albedo_type(ind_wat_win,m))
     1894                IF ( surf_usm_v(l)%albedo_type(m,ind_veg_wall) /= 0 )          &
     1895                   surf_usm_v(l)%albedo(m,ind_veg_wall) =                      &
     1896                        albedo_pars(0,surf_usm_v(l)%albedo_type(m,ind_veg_wall))
     1897                IF ( surf_usm_v(l)%albedo_type(m,ind_pav_green) /= 0 )         &
     1898                   surf_usm_v(l)%albedo(m,ind_pav_green) =                     &
     1899                        albedo_pars(0,surf_usm_v(l)%albedo_type(m,ind_pav_green))
     1900                IF ( surf_usm_v(l)%albedo_type(m,ind_wat_win) /= 0 )           &
     1901                   surf_usm_v(l)%albedo(m,ind_wat_win) =                       &
     1902                        albedo_pars(0,surf_usm_v(l)%albedo_type(m,ind_wat_win))
    19011903             ENDDO
    19021904          ENDDO
     
    19131915                j = surf_lsm_h%j(m)
    19141916                IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill )  THEN
    1915                    surf_lsm_h%albedo(ind_veg_wall,m)  = albedo_pars_f%pars_xy(0,j,i)
    1916                    surf_lsm_h%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i)
    1917                    surf_lsm_h%albedo(ind_wat_win,m)   = albedo_pars_f%pars_xy(0,j,i)
     1917                   surf_lsm_h%albedo(m,ind_veg_wall)  = albedo_pars_f%pars_xy(0,j,i)
     1918                   surf_lsm_h%albedo(m,ind_pav_green) = albedo_pars_f%pars_xy(0,j,i)
     1919                   surf_lsm_h%albedo(m,ind_wat_win)   = albedo_pars_f%pars_xy(0,j,i)
    19181920                ENDIF
    19191921             ENDDO
     
    19221924                j = surf_usm_h%j(m)
    19231925                IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill )  THEN
    1924                    surf_usm_h%albedo(ind_veg_wall,m)  = albedo_pars_f%pars_xy(0,j,i)
    1925                    surf_usm_h%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i)
    1926                    surf_usm_h%albedo(ind_wat_win,m)   = albedo_pars_f%pars_xy(0,j,i)
     1926                   surf_usm_h%albedo(m,ind_veg_wall)  = albedo_pars_f%pars_xy(0,j,i)
     1927                   surf_usm_h%albedo(m,ind_pav_green) = albedo_pars_f%pars_xy(0,j,i)
     1928                   surf_usm_h%albedo(m,ind_wat_win)   = albedo_pars_f%pars_xy(0,j,i)
    19271929                ENDIF
    19281930             ENDDO
     
    19371939                   j = surf_lsm_v(l)%j(m) + joff
    19381940                   IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill )  THEN
    1939                       surf_lsm_v(l)%albedo(ind_veg_wall,m) = albedo_pars_f%pars_xy(0,j,i)
    1940                       surf_lsm_v(l)%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i)
    1941                       surf_lsm_v(l)%albedo(ind_wat_win,m) = albedo_pars_f%pars_xy(0,j,i)
     1941                      surf_lsm_v(l)%albedo(m,ind_veg_wall) = albedo_pars_f%pars_xy(0,j,i)
     1942                      surf_lsm_v(l)%albedo(m,ind_pav_green) = albedo_pars_f%pars_xy(0,j,i)
     1943                      surf_lsm_v(l)%albedo(m,ind_wat_win) = albedo_pars_f%pars_xy(0,j,i)
    19421944                   ENDIF
    19431945                ENDDO
     
    19491951                   j = surf_usm_v(l)%j(m) + joff
    19501952                   IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill )  THEN
    1951                       surf_usm_v(l)%albedo(ind_veg_wall,m) = albedo_pars_f%pars_xy(0,j,i)
    1952                       surf_usm_v(l)%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i)
    1953                       surf_usm_v(l)%albedo(ind_wat_win,m) = albedo_pars_f%pars_xy(0,j,i)
     1953                      surf_usm_v(l)%albedo(m,ind_veg_wall) = albedo_pars_f%pars_xy(0,j,i)
     1954                      surf_usm_v(l)%albedo(m,ind_pav_green) = albedo_pars_f%pars_xy(0,j,i)
     1955                      surf_usm_v(l)%albedo(m,ind_wat_win) = albedo_pars_f%pars_xy(0,j,i)
    19541956                   ENDIF
    19551957                ENDDO
     
    19751977                      IF ( building_surface_pars_f%pars(ind_s_alb_b_wall,is) /=      &
    19761978                           building_surface_pars_f%fill )  THEN
    1977                          surf_usm_h%albedo(ind_veg_wall,m) =                         &
     1979                         surf_usm_h%albedo(m,ind_veg_wall) =                         &
    19781980                                  building_surface_pars_f%pars(ind_s_alb_b_wall,is)
    1979                          surf_usm_h%albedo_type(ind_veg_wall,m) = 0
     1981                         surf_usm_h%albedo_type(m,ind_veg_wall) = 0
    19801982                      ENDIF
    19811983
    19821984                      IF ( building_surface_pars_f%pars(ind_s_alb_b_win,is) /=       &
    19831985                           building_surface_pars_f%fill )  THEN
    1984                          surf_usm_h%albedo(ind_wat_win,m) =                          &
     1986                         surf_usm_h%albedo(m,ind_wat_win) =                          &
    19851987                                  building_surface_pars_f%pars(ind_s_alb_b_win,is)
    1986                          surf_usm_h%albedo_type(ind_wat_win,m) = 0
     1988                         surf_usm_h%albedo_type(m,ind_wat_win) = 0
    19871989                      ENDIF
    19881990
    19891991                      IF ( building_surface_pars_f%pars(ind_s_alb_b_green,is) /=     &
    19901992                           building_surface_pars_f%fill )  THEN
    1991                          surf_usm_h%albedo(ind_pav_green,m) =                        &
     1993                         surf_usm_h%albedo(m,ind_pav_green) =                        &
    19921994                                  building_surface_pars_f%pars(ind_s_alb_b_green,is)
    1993                          surf_usm_h%albedo_type(ind_pav_green,m) = 0
     1995                         surf_usm_h%albedo_type(m,ind_pav_green) = 0
    19941996                      ENDIF
    19951997
     
    20142016                         IF ( building_surface_pars_f%pars(ind_s_alb_b_wall,is) /=      &
    20152017                              building_surface_pars_f%fill )  THEN
    2016                             surf_usm_v(l)%albedo(ind_veg_wall,m) =                      &
     2018                            surf_usm_v(l)%albedo(m,ind_veg_wall) =                      &
    20172019                                     building_surface_pars_f%pars(ind_s_alb_b_wall,is)
    2018                             surf_usm_v(l)%albedo_type(ind_veg_wall,m) = 0
     2020                            surf_usm_v(l)%albedo_type(m,ind_veg_wall) = 0
    20192021                         ENDIF
    20202022
    20212023                         IF ( building_surface_pars_f%pars(ind_s_alb_b_win,is) /=       &
    20222024                              building_surface_pars_f%fill )  THEN
    2023                             surf_usm_v(l)%albedo(ind_wat_win,m) =                       &
     2025                            surf_usm_v(l)%albedo(m,ind_wat_win) =                       &
    20242026                                     building_surface_pars_f%pars(ind_s_alb_b_win,is)
    2025                             surf_usm_v(l)%albedo_type(ind_wat_win,m) = 0
     2027                            surf_usm_v(l)%albedo_type(m,ind_wat_win) = 0
    20262028                         ENDIF
    20272029
    20282030                         IF ( building_surface_pars_f%pars(ind_s_alb_b_green,is) /=     &
    20292031                              building_surface_pars_f%fill )  THEN
    2030                             surf_usm_v(l)%albedo(ind_pav_green,m) =                     &
     2032                            surf_usm_v(l)%albedo(m,ind_pav_green) =                     &
    20312033                                     building_surface_pars_f%pars(ind_s_alb_b_green,is)
    2032                             surf_usm_v(l)%albedo_type(ind_pav_green,m) = 0
     2034                            surf_usm_v(l)%albedo_type(m,ind_pav_green) = 0
    20332035                         ENDIF
    20342036
     
    20472049!--       for wall/green/window (USM) or vegetation/pavement/water surfaces
    20482050!--       (LSM).
    2049           ALLOCATE ( surf_lsm_h%aldif(0:2,1:surf_lsm_h%ns)       )
    2050           ALLOCATE ( surf_lsm_h%aldir(0:2,1:surf_lsm_h%ns)       )
    2051           ALLOCATE ( surf_lsm_h%asdif(0:2,1:surf_lsm_h%ns)       )
    2052           ALLOCATE ( surf_lsm_h%asdir(0:2,1:surf_lsm_h%ns)       )
    2053           ALLOCATE ( surf_lsm_h%rrtm_aldif(0:2,1:surf_lsm_h%ns)  )
    2054           ALLOCATE ( surf_lsm_h%rrtm_aldir(0:2,1:surf_lsm_h%ns)  )
    2055           ALLOCATE ( surf_lsm_h%rrtm_asdif(0:2,1:surf_lsm_h%ns)  )
    2056           ALLOCATE ( surf_lsm_h%rrtm_asdir(0:2,1:surf_lsm_h%ns)  )
    2057 
    2058           ALLOCATE ( surf_usm_h%aldif(0:2,1:surf_usm_h%ns)       )
    2059           ALLOCATE ( surf_usm_h%aldir(0:2,1:surf_usm_h%ns)       )
    2060           ALLOCATE ( surf_usm_h%asdif(0:2,1:surf_usm_h%ns)       )
    2061           ALLOCATE ( surf_usm_h%asdir(0:2,1:surf_usm_h%ns)       )
    2062           ALLOCATE ( surf_usm_h%rrtm_aldif(0:2,1:surf_usm_h%ns)  )
    2063           ALLOCATE ( surf_usm_h%rrtm_aldir(0:2,1:surf_usm_h%ns)  )
    2064           ALLOCATE ( surf_usm_h%rrtm_asdif(0:2,1:surf_usm_h%ns)  )
    2065           ALLOCATE ( surf_usm_h%rrtm_asdir(0:2,1:surf_usm_h%ns)  )
     2051          ALLOCATE ( surf_lsm_h%aldif(1:surf_lsm_h%ns,0:2)       )
     2052          ALLOCATE ( surf_lsm_h%aldir(1:surf_lsm_h%ns,0:2)       )
     2053          ALLOCATE ( surf_lsm_h%asdif(1:surf_lsm_h%ns,0:2)       )
     2054          ALLOCATE ( surf_lsm_h%asdir(1:surf_lsm_h%ns,0:2)       )
     2055          ALLOCATE ( surf_lsm_h%rrtm_aldif(1:surf_lsm_h%ns,0:2)  )
     2056          ALLOCATE ( surf_lsm_h%rrtm_aldir(1:surf_lsm_h%ns,0:2)  )
     2057          ALLOCATE ( surf_lsm_h%rrtm_asdif(1:surf_lsm_h%ns,0:2)  )
     2058          ALLOCATE ( surf_lsm_h%rrtm_asdir(1:surf_lsm_h%ns,0:2)  )
     2059
     2060          ALLOCATE ( surf_usm_h%aldif(1:surf_usm_h%ns,0:2)       )
     2061          ALLOCATE ( surf_usm_h%aldir(1:surf_usm_h%ns,0:2)       )
     2062          ALLOCATE ( surf_usm_h%asdif(1:surf_usm_h%ns,0:2)       )
     2063          ALLOCATE ( surf_usm_h%asdir(1:surf_usm_h%ns,0:2)       )
     2064          ALLOCATE ( surf_usm_h%rrtm_aldif(1:surf_usm_h%ns,0:2)  )
     2065          ALLOCATE ( surf_usm_h%rrtm_aldir(1:surf_usm_h%ns,0:2)  )
     2066          ALLOCATE ( surf_usm_h%rrtm_asdif(1:surf_usm_h%ns,0:2)  )
     2067          ALLOCATE ( surf_usm_h%rrtm_asdir(1:surf_usm_h%ns,0:2)  )
    20662068
    20672069!
     
    20692071!--       implementations)
    20702072          IF ( .NOT. ALLOCATED(surf_lsm_h%albedo) )                            &
    2071              ALLOCATE( surf_lsm_h%albedo(0:2,1:surf_lsm_h%ns)     )
     2073             ALLOCATE( surf_lsm_h%albedo(1:surf_lsm_h%ns,0:2)     )
    20722074          IF ( .NOT. ALLOCATED(surf_usm_h%albedo) )                            &
    2073              ALLOCATE( surf_usm_h%albedo(0:2,1:surf_usm_h%ns)     )
     2075             ALLOCATE( surf_usm_h%albedo(1:surf_usm_h%ns,0:2)     )
    20742076
    20752077!
     
    20772079          DO  l = 0, 3
    20782080
    2079              ALLOCATE ( surf_lsm_v(l)%aldif(0:2,1:surf_lsm_v(l)%ns)      )
    2080              ALLOCATE ( surf_lsm_v(l)%aldir(0:2,1:surf_lsm_v(l)%ns)      )
    2081              ALLOCATE ( surf_lsm_v(l)%asdif(0:2,1:surf_lsm_v(l)%ns)      )
    2082              ALLOCATE ( surf_lsm_v(l)%asdir(0:2,1:surf_lsm_v(l)%ns)      )
    2083 
    2084              ALLOCATE ( surf_lsm_v(l)%rrtm_aldif(0:2,1:surf_lsm_v(l)%ns) )
    2085              ALLOCATE ( surf_lsm_v(l)%rrtm_aldir(0:2,1:surf_lsm_v(l)%ns) )
    2086              ALLOCATE ( surf_lsm_v(l)%rrtm_asdif(0:2,1:surf_lsm_v(l)%ns) )
    2087              ALLOCATE ( surf_lsm_v(l)%rrtm_asdir(0:2,1:surf_lsm_v(l)%ns) )
    2088 
    2089              ALLOCATE ( surf_usm_v(l)%aldif(0:2,1:surf_usm_v(l)%ns)      )
    2090              ALLOCATE ( surf_usm_v(l)%aldir(0:2,1:surf_usm_v(l)%ns)      )
    2091              ALLOCATE ( surf_usm_v(l)%asdif(0:2,1:surf_usm_v(l)%ns)      )
    2092              ALLOCATE ( surf_usm_v(l)%asdir(0:2,1:surf_usm_v(l)%ns)      )
    2093 
    2094              ALLOCATE ( surf_usm_v(l)%rrtm_aldif(0:2,1:surf_usm_v(l)%ns) )
    2095              ALLOCATE ( surf_usm_v(l)%rrtm_aldir(0:2,1:surf_usm_v(l)%ns) )
    2096              ALLOCATE ( surf_usm_v(l)%rrtm_asdif(0:2,1:surf_usm_v(l)%ns) )
    2097              ALLOCATE ( surf_usm_v(l)%rrtm_asdir(0:2,1:surf_usm_v(l)%ns) )
     2081             ALLOCATE ( surf_lsm_v(l)%aldif(1:surf_lsm_v(l)%ns,0:2)      )
     2082             ALLOCATE ( surf_lsm_v(l)%aldir(1:surf_lsm_v(l)%ns,0:2)      )
     2083             ALLOCATE ( surf_lsm_v(l)%asdif(1:surf_lsm_v(l)%ns,0:2)      )
     2084             ALLOCATE ( surf_lsm_v(l)%asdir(1:surf_lsm_v(l)%ns,0:2)      )
     2085
     2086             ALLOCATE ( surf_lsm_v(l)%rrtm_aldif(1:surf_lsm_v(l)%ns,0:2) )
     2087             ALLOCATE ( surf_lsm_v(l)%rrtm_aldir(1:surf_lsm_v(l)%ns,0:2) )
     2088             ALLOCATE ( surf_lsm_v(l)%rrtm_asdif(1:surf_lsm_v(l)%ns,0:2) )
     2089             ALLOCATE ( surf_lsm_v(l)%rrtm_asdir(1:surf_lsm_v(l)%ns,0:2) )
     2090
     2091             ALLOCATE ( surf_usm_v(l)%aldif(1:surf_usm_v(l)%ns,0:2)      )
     2092             ALLOCATE ( surf_usm_v(l)%aldir(1:surf_usm_v(l)%ns,0:2)      )
     2093             ALLOCATE ( surf_usm_v(l)%asdif(1:surf_usm_v(l)%ns,0:2)      )
     2094             ALLOCATE ( surf_usm_v(l)%asdir(1:surf_usm_v(l)%ns,0:2)      )
     2095
     2096             ALLOCATE ( surf_usm_v(l)%rrtm_aldif(1:surf_usm_v(l)%ns,0:2) )
     2097             ALLOCATE ( surf_usm_v(l)%rrtm_aldir(1:surf_usm_v(l)%ns,0:2) )
     2098             ALLOCATE ( surf_usm_v(l)%rrtm_asdif(1:surf_usm_v(l)%ns,0:2) )
     2099             ALLOCATE ( surf_usm_v(l)%rrtm_asdir(1:surf_usm_v(l)%ns,0:2) )
    20982100!
    20992101!--          Allocate broadband albedo (temporary for the current radiation
    21002102!--          implementations)
    21012103             IF ( .NOT. ALLOCATED( surf_lsm_v(l)%albedo ) )                    &
    2102                 ALLOCATE( surf_lsm_v(l)%albedo(0:2,1:surf_lsm_v(l)%ns) )
     2104                ALLOCATE( surf_lsm_v(l)%albedo(1:surf_lsm_v(l)%ns,0:2) )
    21032105             IF ( .NOT. ALLOCATED( surf_usm_v(l)%albedo ) )                    &
    2104                 ALLOCATE( surf_usm_v(l)%albedo(0:2,1:surf_usm_v(l)%ns) )
     2106                ALLOCATE( surf_usm_v(l)%albedo(1:surf_usm_v(l)%ns,0:2) )
    21052107
    21062108          ENDDO
     
    21652167!--          Spectral albedos for vegetation/pavement/water surfaces
    21662168             DO  ind_type = 0, 2
    2167                 IF ( surf_lsm_h%albedo_type(ind_type,m) /= 0 )  THEN
    2168                    surf_lsm_h%aldif(ind_type,m) =                              &
    2169                                albedo_pars(1,surf_lsm_h%albedo_type(ind_type,m))
    2170                    surf_lsm_h%asdif(ind_type,m) =                              &
    2171                                albedo_pars(2,surf_lsm_h%albedo_type(ind_type,m))
    2172                    surf_lsm_h%aldir(ind_type,m) =                              &
    2173                                albedo_pars(1,surf_lsm_h%albedo_type(ind_type,m))
    2174                    surf_lsm_h%asdir(ind_type,m) =                              &
    2175                                albedo_pars(2,surf_lsm_h%albedo_type(ind_type,m))
    2176                    surf_lsm_h%albedo(ind_type,m) =                             &
    2177                                albedo_pars(0,surf_lsm_h%albedo_type(ind_type,m))
     2169                IF ( surf_lsm_h%albedo_type(m,ind_type) /= 0 )  THEN
     2170                   surf_lsm_h%aldif(m,ind_type) =                              &
     2171                               albedo_pars(1,surf_lsm_h%albedo_type(m,ind_type))
     2172                   surf_lsm_h%asdif(m,ind_type) =                              &
     2173                               albedo_pars(2,surf_lsm_h%albedo_type(m,ind_type))
     2174                   surf_lsm_h%aldir(m,ind_type) =                              &
     2175                               albedo_pars(1,surf_lsm_h%albedo_type(m,ind_type))
     2176                   surf_lsm_h%asdir(m,ind_type) =                              &
     2177                               albedo_pars(2,surf_lsm_h%albedo_type(m,ind_type))
     2178                   surf_lsm_h%albedo(m,ind_type) =                             &
     2179                               albedo_pars(0,surf_lsm_h%albedo_type(m,ind_type))
    21782180                ENDIF
    21792181             ENDDO
     
    21882190!--             Spectral albedos for wall/green/window surfaces
    21892191                DO  ind_type = 0, 2
    2190                    IF ( surf_usm_h%albedo_type(ind_type,m) /= 0 )  THEN
    2191                       surf_usm_h%aldif(ind_type,m) =                           &
    2192                                albedo_pars(1,surf_usm_h%albedo_type(ind_type,m))
    2193                       surf_usm_h%asdif(ind_type,m) =                           &
    2194                                albedo_pars(2,surf_usm_h%albedo_type(ind_type,m))
    2195                       surf_usm_h%aldir(ind_type,m) =                           &
    2196                                albedo_pars(1,surf_usm_h%albedo_type(ind_type,m))
    2197                       surf_usm_h%asdir(ind_type,m) =                           &
    2198                                albedo_pars(2,surf_usm_h%albedo_type(ind_type,m))
    2199                       surf_usm_h%albedo(ind_type,m) =                          &
    2200                                albedo_pars(0,surf_usm_h%albedo_type(ind_type,m))
     2192                   IF ( surf_usm_h%albedo_type(m,ind_type) /= 0 )  THEN
     2193                      surf_usm_h%aldif(m,ind_type) =                           &
     2194                               albedo_pars(1,surf_usm_h%albedo_type(m,ind_type))
     2195                      surf_usm_h%asdif(m,ind_type) =                           &
     2196                               albedo_pars(2,surf_usm_h%albedo_type(m,ind_type))
     2197                      surf_usm_h%aldir(m,ind_type) =                           &
     2198                               albedo_pars(1,surf_usm_h%albedo_type(m,ind_type))
     2199                      surf_usm_h%asdir(m,ind_type) =                           &
     2200                               albedo_pars(2,surf_usm_h%albedo_type(m,ind_type))
     2201                      surf_usm_h%albedo(m,ind_type) =                          &
     2202                               albedo_pars(0,surf_usm_h%albedo_type(m,ind_type))
    22012203                   ENDIF
    22022204                ENDDO
     
    22112213!--             Spectral albedos for vegetation/pavement/water surfaces
    22122214                DO  ind_type = 0, 2
    2213                    IF ( surf_lsm_v(l)%albedo_type(ind_type,m) /= 0 )  THEN
    2214                       surf_lsm_v(l)%aldif(ind_type,m) =                        &
    2215                             albedo_pars(1,surf_lsm_v(l)%albedo_type(ind_type,m))
    2216                       surf_lsm_v(l)%asdif(ind_type,m) =                        &
    2217                             albedo_pars(2,surf_lsm_v(l)%albedo_type(ind_type,m))
    2218                       surf_lsm_v(l)%aldir(ind_type,m) =                        &
    2219                             albedo_pars(1,surf_lsm_v(l)%albedo_type(ind_type,m))
    2220                       surf_lsm_v(l)%asdir(ind_type,m) =                        &
    2221                             albedo_pars(2,surf_lsm_v(l)%albedo_type(ind_type,m))
    2222                       surf_lsm_v(l)%albedo(ind_type,m) =                       &
    2223                             albedo_pars(0,surf_lsm_v(l)%albedo_type(ind_type,m))
     2215                   IF ( surf_lsm_v(l)%albedo_type(m,ind_type) /= 0 )  THEN
     2216                      surf_lsm_v(l)%aldif(m,ind_type) =                        &
     2217                            albedo_pars(1,surf_lsm_v(l)%albedo_type(m,ind_type))
     2218                      surf_lsm_v(l)%asdif(m,ind_type) =                        &
     2219                            albedo_pars(2,surf_lsm_v(l)%albedo_type(m,ind_type))
     2220                      surf_lsm_v(l)%aldir(m,ind_type) =                        &
     2221                            albedo_pars(1,surf_lsm_v(l)%albedo_type(m,ind_type))
     2222                      surf_lsm_v(l)%asdir(m,ind_type) =                        &
     2223                            albedo_pars(2,surf_lsm_v(l)%albedo_type(m,ind_type))
     2224                      surf_lsm_v(l)%albedo(m,ind_type) =                       &
     2225                            albedo_pars(0,surf_lsm_v(l)%albedo_type(m,ind_type))
    22242226                   ENDIF
    22252227                ENDDO
     
    22332235!--                Spectral albedos for wall/green/window surfaces
    22342236                   DO  ind_type = 0, 2
    2235                       IF ( surf_usm_v(l)%albedo_type(ind_type,m) /= 0 )  THEN
    2236                          surf_usm_v(l)%aldif(ind_type,m) =                     &
    2237                             albedo_pars(1,surf_usm_v(l)%albedo_type(ind_type,m))
    2238                          surf_usm_v(l)%asdif(ind_type,m) =                     &
    2239                             albedo_pars(2,surf_usm_v(l)%albedo_type(ind_type,m))
    2240                          surf_usm_v(l)%aldir(ind_type,m) =                     &
    2241                             albedo_pars(1,surf_usm_v(l)%albedo_type(ind_type,m))
    2242                          surf_usm_v(l)%asdir(ind_type,m) =                     &
    2243                             albedo_pars(2,surf_usm_v(l)%albedo_type(ind_type,m))
    2244                          surf_usm_v(l)%albedo(ind_type,m) =                    &
    2245                             albedo_pars(0,surf_usm_v(l)%albedo_type(ind_type,m))
     2237                      IF ( surf_usm_v(l)%albedo_type(m,ind_type) /= 0 )  THEN
     2238                         surf_usm_v(l)%aldif(m,ind_type) =                     &
     2239                            albedo_pars(1,surf_usm_v(l)%albedo_type(m,ind_type))
     2240                         surf_usm_v(l)%asdif(m,ind_type) =                     &
     2241                            albedo_pars(2,surf_usm_v(l)%albedo_type(m,ind_type))
     2242                         surf_usm_v(l)%aldir(m,ind_type) =                     &
     2243                            albedo_pars(1,surf_usm_v(l)%albedo_type(m,ind_type))
     2244                         surf_usm_v(l)%asdir(m,ind_type) =                     &
     2245                            albedo_pars(2,surf_usm_v(l)%albedo_type(m,ind_type))
     2246                         surf_usm_v(l)%albedo(m,ind_type) =                    &
     2247                            albedo_pars(0,surf_usm_v(l)%albedo_type(m,ind_type))
    22462248                      ENDIF
    22472249                   ENDDO
     
    22632265                DO  ind_type = 0, 2
    22642266                   IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill )   &
    2265                       surf_lsm_h%albedo(ind_type,m) =                          &
     2267                      surf_lsm_h%albedo(m,ind_type) =                          &
    22662268                                             albedo_pars_f%pars_xy(0,j,i)     
    22672269                   IF ( albedo_pars_f%pars_xy(1,j,i) /= albedo_pars_f%fill )   &
    2268                       surf_lsm_h%aldir(ind_type,m) =                           &
     2270                      surf_lsm_h%aldir(m,ind_type) =                           &
    22692271                                             albedo_pars_f%pars_xy(1,j,i)     
    22702272                   IF ( albedo_pars_f%pars_xy(1,j,i) /= albedo_pars_f%fill )   &
    2271                       surf_lsm_h%aldif(ind_type,m) =                           &
     2273                      surf_lsm_h%aldif(m,ind_type) =                           &
    22722274                                             albedo_pars_f%pars_xy(1,j,i)     
    22732275                   IF ( albedo_pars_f%pars_xy(2,j,i) /= albedo_pars_f%fill )   &
    2274                       surf_lsm_h%asdir(ind_type,m) =                           &
     2276                      surf_lsm_h%asdir(m,ind_type) =                           &
    22752277                                             albedo_pars_f%pars_xy(2,j,i)     
    22762278                   IF ( albedo_pars_f%pars_xy(2,j,i) /= albedo_pars_f%fill )   &
    2277                       surf_lsm_h%asdif(ind_type,m) =                           &
     2279                      surf_lsm_h%asdif(m,ind_type) =                           &
    22782280                                             albedo_pars_f%pars_xy(2,j,i)
    22792281                ENDDO
     
    22902292                   DO  ind_type = 0, 2
    22912293                      IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill )&
    2292                          surf_usm_h%albedo(ind_type,m) =                       &
     2294                         surf_usm_h%albedo(m,ind_type) =                       &
    22932295                                             albedo_pars_f%pars_xy(0,j,i)
    22942296                   ENDDO
     
    22962298!--                Spectral albedos especially for building wall surfaces
    22972299                   IF ( albedo_pars_f%pars_xy(1,j,i) /= albedo_pars_f%fill )  THEN
    2298                       surf_usm_h%aldir(ind_veg_wall,m) =                       &
     2300                      surf_usm_h%aldir(m,ind_veg_wall) =                       &
    22992301                                                albedo_pars_f%pars_xy(1,j,i)
    2300                       surf_usm_h%aldif(ind_veg_wall,m) =                       &
     2302                      surf_usm_h%aldif(m,ind_veg_wall) =                       &
    23012303                                                albedo_pars_f%pars_xy(1,j,i)
    23022304                   ENDIF
    23032305                   IF ( albedo_pars_f%pars_xy(2,j,i) /= albedo_pars_f%fill )  THEN
    2304                       surf_usm_h%asdir(ind_veg_wall,m) =                       &
     2306                      surf_usm_h%asdir(m,ind_veg_wall) =                       &
    23052307                                                albedo_pars_f%pars_xy(2,j,i)
    2306                       surf_usm_h%asdif(ind_veg_wall,m) =                       &
     2308                      surf_usm_h%asdif(m,ind_veg_wall) =                       &
    23072309                                                albedo_pars_f%pars_xy(2,j,i)
    23082310                   ENDIF
     
    23102312!--                Spectral albedos especially for building green surfaces
    23112313                   IF ( albedo_pars_f%pars_xy(3,j,i) /= albedo_pars_f%fill )  THEN
    2312                       surf_usm_h%aldir(ind_pav_green,m) =                      &
     2314                      surf_usm_h%aldir(m,ind_pav_green) =                      &
    23132315                                                albedo_pars_f%pars_xy(3,j,i)
    2314                       surf_usm_h%aldif(ind_pav_green,m) =                      &
     2316                      surf_usm_h%aldif(m,ind_pav_green) =                      &
    23152317                                                albedo_pars_f%pars_xy(3,j,i)
    23162318                   ENDIF
    23172319                   IF ( albedo_pars_f%pars_xy(4,j,i) /= albedo_pars_f%fill )  THEN
    2318                       surf_usm_h%asdir(ind_pav_green,m) =                      &
     2320                      surf_usm_h%asdir(m,ind_pav_green) =                      &
    23192321                                                albedo_pars_f%pars_xy(4,j,i)
    2320                       surf_usm_h%asdif(ind_pav_green,m) =                      &
     2322                      surf_usm_h%asdif(m,ind_pav_green) =                      &
    23212323                                                albedo_pars_f%pars_xy(4,j,i)
    23222324                   ENDIF
     
    23242326!--                Spectral albedos especially for building window surfaces
    23252327                   IF ( albedo_pars_f%pars_xy(5,j,i) /= albedo_pars_f%fill )  THEN
    2326                       surf_usm_h%aldir(ind_wat_win,m) =                        &
     2328                      surf_usm_h%aldir(m,ind_wat_win) =                        &
    23272329                                                albedo_pars_f%pars_xy(5,j,i)
    2328                       surf_usm_h%aldif(ind_wat_win,m) =                        &
     2330                      surf_usm_h%aldif(m,ind_wat_win) =                        &
    23292331                                                albedo_pars_f%pars_xy(5,j,i)
    23302332                   ENDIF
    23312333                   IF ( albedo_pars_f%pars_xy(6,j,i) /= albedo_pars_f%fill )  THEN
    2332                       surf_usm_h%asdir(ind_wat_win,m) =                        &
     2334                      surf_usm_h%asdir(m,ind_wat_win) =                        &
    23332335                                                albedo_pars_f%pars_xy(6,j,i)
    2334                       surf_usm_h%asdif(ind_wat_win,m) =                        &
     2336                      surf_usm_h%asdif(m,ind_wat_win) =                        &
    23352337                                                albedo_pars_f%pars_xy(6,j,i)
    23362338                   ENDIF
     
    23522354                      IF ( albedo_pars_f%pars_xy(0,j+joff,i+ioff) /=           &
    23532355                           albedo_pars_f%fill )                                &
    2354                          surf_lsm_v(l)%albedo(ind_type,m) =                    &
     2356                         surf_lsm_v(l)%albedo(m,ind_type) =                    &
    23552357                                       albedo_pars_f%pars_xy(0,j+joff,i+ioff)
    23562358                      IF ( albedo_pars_f%pars_xy(1,j+joff,i+ioff) /=           &
    23572359                           albedo_pars_f%fill )                                &
    2358                          surf_lsm_v(l)%aldir(ind_type,m) =                     &
     2360                         surf_lsm_v(l)%aldir(m,ind_type) =                     &
    23592361                                       albedo_pars_f%pars_xy(1,j+joff,i+ioff)
    23602362                      IF ( albedo_pars_f%pars_xy(1,j+joff,i+ioff) /=           &
    23612363                           albedo_pars_f%fill )                                &
    2362                          surf_lsm_v(l)%aldif(ind_type,m) =                     &
     2364                         surf_lsm_v(l)%aldif(m,ind_type) =                     &
    23632365                                       albedo_pars_f%pars_xy(1,j+joff,i+ioff)
    23642366                      IF ( albedo_pars_f%pars_xy(2,j+joff,i+ioff) /=           &
    23652367                           albedo_pars_f%fill )                                &
    2366                          surf_lsm_v(l)%asdir(ind_type,m) =                     &
     2368                         surf_lsm_v(l)%asdir(m,ind_type) =                     &
    23672369                                       albedo_pars_f%pars_xy(2,j+joff,i+ioff)
    23682370                      IF ( albedo_pars_f%pars_xy(2,j+joff,i+ioff) /=           &
    23692371                           albedo_pars_f%fill )                                &
    2370                          surf_lsm_v(l)%asdif(ind_type,m) =                     &
     2372                         surf_lsm_v(l)%asdif(m,ind_type) =                     &
    23712373                                       albedo_pars_f%pars_xy(2,j+joff,i+ioff)
    23722374                   ENDDO
     
    23872389                         IF ( albedo_pars_f%pars_xy(0,j+joff,i+ioff) /=        &
    23882390                              albedo_pars_f%fill )                             &
    2389                             surf_usm_v(l)%albedo(ind_type,m) =                 &
     2391                            surf_usm_v(l)%albedo(m,ind_type) =                 &
    23902392                                          albedo_pars_f%pars_xy(0,j+joff,i+ioff)
    23912393                      ENDDO
     
    23942396                      IF ( albedo_pars_f%pars_xy(1,j+joff,i+ioff) /=           &
    23952397                           albedo_pars_f%fill )  THEN
    2396                          surf_usm_v(l)%aldir(ind_veg_wall,m) =                 &
     2398                         surf_usm_v(l)%aldir(m,ind_veg_wall) =                 &
    23972399                                         albedo_pars_f%pars_xy(1,j+joff,i+ioff)
    2398                          surf_usm_v(l)%aldif(ind_veg_wall,m) =                 &
     2400                         surf_usm_v(l)%aldif(m,ind_veg_wall) =                 &
    23992401                                         albedo_pars_f%pars_xy(1,j+joff,i+ioff)
    24002402                      ENDIF
    24012403                      IF ( albedo_pars_f%pars_xy(2,j+joff,i+ioff) /=           &
    24022404                           albedo_pars_f%fill )  THEN
    2403                          surf_usm_v(l)%asdir(ind_veg_wall,m) =                 &
     2405                         surf_usm_v(l)%asdir(m,ind_veg_wall) =                 &
    24042406                                         albedo_pars_f%pars_xy(2,j+joff,i+ioff)
    2405                          surf_usm_v(l)%asdif(ind_veg_wall,m) =                 &
     2407                         surf_usm_v(l)%asdif(m,ind_veg_wall) =                 &
    24062408                                         albedo_pars_f%pars_xy(2,j+joff,i+ioff)
    24072409                      ENDIF
     
    24102412                      IF ( albedo_pars_f%pars_xy(3,j+joff,i+ioff) /=           &
    24112413                           albedo_pars_f%fill )  THEN
    2412                          surf_usm_v(l)%aldir(ind_pav_green,m) =                &
     2414                         surf_usm_v(l)%aldir(m,ind_pav_green) =                &
    24132415                                         albedo_pars_f%pars_xy(3,j+joff,i+ioff)
    2414                          surf_usm_v(l)%aldif(ind_pav_green,m) =                &
     2416                         surf_usm_v(l)%aldif(m,ind_pav_green) =                &
    24152417                                         albedo_pars_f%pars_xy(3,j+joff,i+ioff)
    24162418                      ENDIF
    24172419                      IF ( albedo_pars_f%pars_xy(4,j+joff,i+ioff) /=           &
    24182420                           albedo_pars_f%fill )  THEN
    2419                          surf_usm_v(l)%asdir(ind_pav_green,m) =                &
     2421                         surf_usm_v(l)%asdir(m,ind_pav_green) =                &
    24202422                                         albedo_pars_f%pars_xy(4,j+joff,i+ioff)
    2421                          surf_usm_v(l)%asdif(ind_pav_green,m) =                &
     2423                         surf_usm_v(l)%asdif(m,ind_pav_green) =                &
    24222424                                         albedo_pars_f%pars_xy(4,j+joff,i+ioff)
    24232425                      ENDIF
     
    24262428                      IF ( albedo_pars_f%pars_xy(5,j+joff,i+ioff) /=           &
    24272429                           albedo_pars_f%fill )  THEN
    2428                          surf_usm_v(l)%aldir(ind_wat_win,m) =                  &
     2430                         surf_usm_v(l)%aldir(m,ind_wat_win) =                  &
    24292431                                         albedo_pars_f%pars_xy(5,j+joff,i+ioff)
    2430                          surf_usm_v(l)%aldif(ind_wat_win,m) =                  &
     2432                         surf_usm_v(l)%aldif(m,ind_wat_win) =                  &
    24312433                                         albedo_pars_f%pars_xy(5,j+joff,i+ioff)
    24322434                      ENDIF
    24332435                      IF ( albedo_pars_f%pars_xy(6,j+joff,i+ioff) /=           &
    24342436                           albedo_pars_f%fill )  THEN
    2435                          surf_usm_v(l)%asdir(ind_wat_win,m) =                  &
     2437                         surf_usm_v(l)%asdir(m,ind_wat_win) =                  &
    24362438                                         albedo_pars_f%pars_xy(6,j+joff,i+ioff)
    2437                          surf_usm_v(l)%asdif(ind_wat_win,m) =                  &
     2439                         surf_usm_v(l)%asdif(m,ind_wat_win) =                  &
    24382440                                         albedo_pars_f%pars_xy(6,j+joff,i+ioff)
    24392441                      ENDIF
     
    24612463                      IF ( building_surface_pars_f%pars(ind_s_alb_b_wall,is) /=      &
    24622464                           building_surface_pars_f%fill )  THEN
    2463                          surf_usm_h%albedo(ind_veg_wall,m) =                         &
     2465                         surf_usm_h%albedo(m,ind_veg_wall) =                         &
    24642466                                  building_surface_pars_f%pars(ind_s_alb_b_wall,is)
    2465                          surf_usm_h%albedo_type(ind_veg_wall,m) = 0
     2467                         surf_usm_h%albedo_type(m,ind_veg_wall) = 0
    24662468                      ENDIF
    24672469
    24682470                      IF ( building_surface_pars_f%pars(ind_s_alb_l_wall,is) /=      &
    24692471                           building_surface_pars_f%fill )  THEN
    2470                          surf_usm_h%aldir(ind_veg_wall,m) =                          &
     2472                         surf_usm_h%aldir(m,ind_veg_wall) =                          &
    24712473                                  building_surface_pars_f%pars(ind_s_alb_l_wall,is)
    2472                          surf_usm_h%aldif(ind_veg_wall,m) =                          &
     2474                         surf_usm_h%aldif(m,ind_veg_wall) =                          &
    24732475                                  building_surface_pars_f%pars(ind_s_alb_l_wall,is)
    2474                          surf_usm_h%albedo_type(ind_veg_wall,m) = 0
     2476                         surf_usm_h%albedo_type(m,ind_veg_wall) = 0
    24752477                      ENDIF
    24762478
    24772479                      IF ( building_surface_pars_f%pars(ind_s_alb_s_wall,is) /=      &
    24782480                           building_surface_pars_f%fill )  THEN
    2479                          surf_usm_h%asdir(ind_veg_wall,m) =                          &
     2481                         surf_usm_h%asdir(m,ind_veg_wall) =                          &
    24802482                                  building_surface_pars_f%pars(ind_s_alb_s_wall,is)
    2481                          surf_usm_h%asdif(ind_veg_wall,m) =                          &
     2483                         surf_usm_h%asdif(m,ind_veg_wall) =                          &
    24822484                                  building_surface_pars_f%pars(ind_s_alb_s_wall,is)
    2483                          surf_usm_h%albedo_type(ind_veg_wall,m) = 0
     2485                         surf_usm_h%albedo_type(m,ind_veg_wall) = 0
    24842486                      ENDIF
    24852487
    24862488                      IF ( building_surface_pars_f%pars(ind_s_alb_b_win,is) /=       &
    24872489                           building_surface_pars_f%fill )  THEN
    2488                          surf_usm_h%albedo(ind_wat_win,m) =                          &
     2490                         surf_usm_h%albedo(m,ind_wat_win) =                          &
    24892491                                  building_surface_pars_f%pars(ind_s_alb_b_win,is)
    2490                          surf_usm_h%albedo_type(ind_wat_win,m) = 0
     2492                         surf_usm_h%albedo_type(m,ind_wat_win) = 0
    24912493                      ENDIF
    24922494
    24932495                      IF ( building_surface_pars_f%pars(ind_s_alb_l_win,is) /=       &
    24942496                           building_surface_pars_f%fill )  THEN
    2495                          surf_usm_h%aldir(ind_wat_win,m) =                           &
     2497                         surf_usm_h%aldir(m,ind_wat_win) =                           &
    24962498                                  building_surface_pars_f%pars(ind_s_alb_l_win,is)
    2497                          surf_usm_h%aldif(ind_wat_win,m) =                           &
     2499                         surf_usm_h%aldif(m,ind_wat_win) =                           &
    24982500                                  building_surface_pars_f%pars(ind_s_alb_l_win,is)
    2499                          surf_usm_h%albedo_type(ind_wat_win,m) = 0
     2501                         surf_usm_h%albedo_type(m,ind_wat_win) = 0
    25002502                      ENDIF
    25012503
    25022504                      IF ( building_surface_pars_f%pars(ind_s_alb_s_win,is) /=       &
    25032505                           building_surface_pars_f%fill )  THEN
    2504                          surf_usm_h%asdir(ind_wat_win,m) =                           &
     2506                         surf_usm_h%asdir(m,ind_wat_win) =                           &
    25052507                                  building_surface_pars_f%pars(ind_s_alb_s_win,is)
    2506                          surf_usm_h%asdif(ind_wat_win,m) =                           &
     2508                         surf_usm_h%asdif(m,ind_wat_win) =                           &
    25072509                                  building_surface_pars_f%pars(ind_s_alb_s_win,is)
    2508                          surf_usm_h%albedo_type(ind_wat_win,m) = 0
     2510                         surf_usm_h%albedo_type(m,ind_wat_win) = 0
    25092511                      ENDIF
    25102512
    25112513                      IF ( building_surface_pars_f%pars(ind_s_alb_b_green,is) /=     &
    25122514                           building_surface_pars_f%fill )  THEN
    2513                          surf_usm_h%albedo(ind_pav_green,m) =                        &
     2515                         surf_usm_h%albedo(m,ind_pav_green) =                        &
    25142516                                  building_surface_pars_f%pars(ind_s_alb_b_green,is)
    2515                          surf_usm_h%albedo_type(ind_pav_green,m) = 0
     2517                         surf_usm_h%albedo_type(m,ind_pav_green) = 0
    25162518                      ENDIF
    25172519
    25182520                      IF ( building_surface_pars_f%pars(ind_s_alb_l_green,is) /=     &
    25192521                           building_surface_pars_f%fill )  THEN
    2520                          surf_usm_h%aldir(ind_pav_green,m) =                         &
     2522                         surf_usm_h%aldir(m,ind_pav_green) =                         &
    25212523                                  building_surface_pars_f%pars(ind_s_alb_l_green,is)
    2522                          surf_usm_h%aldif(ind_pav_green,m) =                         &
     2524                         surf_usm_h%aldif(m,ind_pav_green) =                         &
    25232525                                  building_surface_pars_f%pars(ind_s_alb_l_green,is)
    2524                          surf_usm_h%albedo_type(ind_pav_green,m) = 0
     2526                         surf_usm_h%albedo_type(m,ind_pav_green) = 0
    25252527                      ENDIF
    25262528
    25272529                      IF ( building_surface_pars_f%pars(ind_s_alb_s_green,is) /=     &
    25282530                           building_surface_pars_f%fill )  THEN
    2529                          surf_usm_h%asdir(ind_pav_green,m) =                         &
     2531                         surf_usm_h%asdir(m,ind_pav_green) =                         &
    25302532                                  building_surface_pars_f%pars(ind_s_alb_s_green,is)
    2531                          surf_usm_h%asdif(ind_pav_green,m) =                         &
     2533                         surf_usm_h%asdif(m,ind_pav_green) =                         &
    25322534                                  building_surface_pars_f%pars(ind_s_alb_s_green,is)
    2533                          surf_usm_h%albedo_type(ind_pav_green,m) = 0
     2535                         surf_usm_h%albedo_type(m,ind_pav_green) = 0
    25342536                      ENDIF
    25352537
     
    25542556                         IF ( building_surface_pars_f%pars(ind_s_alb_b_wall,is) /=      &
    25552557                              building_surface_pars_f%fill )  THEN
    2556                             surf_usm_v(l)%albedo(ind_veg_wall,m) =                      &
     2558                            surf_usm_v(l)%albedo(m,ind_veg_wall) =                      &
    25572559                                     building_surface_pars_f%pars(ind_s_alb_b_wall,is)
    2558                             surf_usm_v(l)%albedo_type(ind_veg_wall,m) = 0
     2560                            surf_usm_v(l)%albedo_type(m,ind_veg_wall) = 0
    25592561                         ENDIF
    25602562
    25612563                         IF ( building_surface_pars_f%pars(ind_s_alb_l_wall,is) /=      &
    25622564                              building_surface_pars_f%fill )  THEN
    2563                             surf_usm_v(l)%aldir(ind_veg_wall,m) =                       &
     2565                            surf_usm_v(l)%aldir(m,ind_veg_wall) =                       &
    25642566                                     building_surface_pars_f%pars(ind_s_alb_l_wall,is)
    2565                             surf_usm_v(l)%aldif(ind_veg_wall,m) =                       &
     2567                            surf_usm_v(l)%aldif(m,ind_veg_wall) =                       &
    25662568                                     building_surface_pars_f%pars(ind_s_alb_l_wall,is)
    2567                             surf_usm_v(l)%albedo_type(ind_veg_wall,m) = 0
     2569                            surf_usm_v(l)%albedo_type(m,ind_veg_wall) = 0
    25682570                         ENDIF
    25692571
    25702572                         IF ( building_surface_pars_f%pars(ind_s_alb_s_wall,is) /=      &
    25712573                              building_surface_pars_f%fill )  THEN
    2572                             surf_usm_v(l)%asdir(ind_veg_wall,m) =                       &
     2574                            surf_usm_v(l)%asdir(m,ind_veg_wall) =                       &
    25732575                                     building_surface_pars_f%pars(ind_s_alb_s_wall,is)
    2574                             surf_usm_v(l)%asdif(ind_veg_wall,m) =                       &
     2576                            surf_usm_v(l)%asdif(m,ind_veg_wall) =                       &
    25752577                                     building_surface_pars_f%pars(ind_s_alb_s_wall,is)
    2576                             surf_usm_v(l)%albedo_type(ind_veg_wall,m) = 0
     2578                            surf_usm_v(l)%albedo_type(m,ind_veg_wall) = 0
    25772579                         ENDIF
    25782580
    25792581                         IF ( building_surface_pars_f%pars(ind_s_alb_b_win,is) /=       &
    25802582                              building_surface_pars_f%fill )  THEN
    2581                             surf_usm_v(l)%albedo(ind_wat_win,m) =                       &
     2583                            surf_usm_v(l)%albedo(m,ind_wat_win) =                       &
    25822584                                     building_surface_pars_f%pars(ind_s_alb_b_win,is)
    2583                             surf_usm_v(l)%albedo_type(ind_wat_win,m) = 0
     2585                            surf_usm_v(l)%albedo_type(m,ind_wat_win) = 0
    25842586                         ENDIF
    25852587
    25862588                         IF ( building_surface_pars_f%pars(ind_s_alb_l_win,is) /=       &
    25872589                              building_surface_pars_f%fill )  THEN
    2588                             surf_usm_v(l)%aldir(ind_wat_win,m) =                        &
     2590                            surf_usm_v(l)%aldir(m,ind_wat_win) =                        &
    25892591                                     building_surface_pars_f%pars(ind_s_alb_l_win,is)
    2590                             surf_usm_v(l)%aldif(ind_wat_win,m) =                        &
     2592                            surf_usm_v(l)%aldif(m,ind_wat_win) =                        &
    25912593                                     building_surface_pars_f%pars(ind_s_alb_l_win,is)
    2592                             surf_usm_v(l)%albedo_type(ind_wat_win,m) = 0
     2594                            surf_usm_v(l)%albedo_type(m,ind_wat_win) = 0
    25932595                         ENDIF
    25942596
    25952597                         IF ( building_surface_pars_f%pars(ind_s_alb_s_win,is) /=       &
    25962598                              building_surface_pars_f%fill )  THEN
    2597                             surf_usm_v(l)%asdir(ind_wat_win,m) =                        &
     2599                            surf_usm_v(l)%asdir(m,ind_wat_win) =                        &
    25982600                                     building_surface_pars_f%pars(ind_s_alb_s_win,is)
    2599                             surf_usm_v(l)%asdif(ind_wat_win,m) =                        &
     2601                            surf_usm_v(l)%asdif(m,ind_wat_win) =                        &
    26002602                                     building_surface_pars_f%pars(ind_s_alb_s_win,is)
    2601                             surf_usm_v(l)%albedo_type(ind_wat_win,m) = 0
     2603                            surf_usm_v(l)%albedo_type(m,ind_wat_win) = 0
    26022604                         ENDIF
    26032605
    26042606                         IF ( building_surface_pars_f%pars(ind_s_alb_b_green,is) /=     &
    26052607                              building_surface_pars_f%fill )  THEN
    2606                             surf_usm_v(l)%albedo(ind_pav_green,m) =                     &
     2608                            surf_usm_v(l)%albedo(m,ind_pav_green) =                     &
    26072609                                     building_surface_pars_f%pars(ind_s_alb_b_green,is)
    2608                             surf_usm_v(l)%albedo_type(ind_pav_green,m) = 0
     2610                            surf_usm_v(l)%albedo_type(m,ind_pav_green) = 0
    26092611                         ENDIF
    26102612
    26112613                         IF ( building_surface_pars_f%pars(ind_s_alb_l_green,is) /=     &
    26122614                              building_surface_pars_f%fill )  THEN
    2613                             surf_usm_v(l)%aldir(ind_pav_green,m) =                      &
     2615                            surf_usm_v(l)%aldir(m,ind_pav_green) =                      &
    26142616                                     building_surface_pars_f%pars(ind_s_alb_l_green,is)
    2615                             surf_usm_v(l)%aldif(ind_pav_green,m) =                      &
     2617                            surf_usm_v(l)%aldif(m,ind_pav_green) =                      &
    26162618                                     building_surface_pars_f%pars(ind_s_alb_l_green,is)
    2617                             surf_usm_v(l)%albedo_type(ind_pav_green,m) = 0
     2619                            surf_usm_v(l)%albedo_type(m,ind_pav_green) = 0
    26182620                         ENDIF
    26192621
    26202622                         IF ( building_surface_pars_f%pars(ind_s_alb_s_green,is) /=     &
    26212623                              building_surface_pars_f%fill )  THEN
    2622                             surf_usm_v(l)%asdir(ind_pav_green,m) =                      &
     2624                            surf_usm_v(l)%asdir(m,ind_pav_green) =                      &
    26232625                                     building_surface_pars_f%pars(ind_s_alb_s_green,is)
    2624                             surf_usm_v(l)%asdif(ind_pav_green,m) =                      &
     2626                            surf_usm_v(l)%asdif(m,ind_pav_green) =                      &
    26252627                                     building_surface_pars_f%pars(ind_s_alb_s_green,is)
    2626                             surf_usm_v(l)%albedo_type(ind_pav_green,m) = 0
     2628                            surf_usm_v(l)%albedo_type(m,ind_pav_green) = 0
    26272629                         ENDIF
    26282630
     
    32723274                   DO  m = 1, surf%ns
    32733275                      k = surf%k(m)
    3274                       surf%rad_sw_out(m) = ( surf%frac(ind_veg_wall,m)  *      &
    3275                                              surf%albedo(ind_veg_wall,m)       &
    3276                                            + surf%frac(ind_pav_green,m) *      &
    3277                                              surf%albedo(ind_pav_green,m)      &
    3278                                            + surf%frac(ind_wat_win,m)   *      &
    3279                                              surf%albedo(ind_wat_win,m) )      &
     3276                      surf%rad_sw_out(m) = ( surf%frac(m,ind_veg_wall)  *      &
     3277                                             surf%albedo(m,ind_veg_wall)       &
     3278                                           + surf%frac(m,ind_pav_green) *      &
     3279                                             surf%albedo(m,ind_pav_green)      &
     3280                                           + surf%frac(m,ind_wat_win)   *      &
     3281                                             surf%albedo(m,ind_wat_win) )      &
    32803282                                           * surf%rad_sw_in(m)
    32813283                   
    3282                       surf%rad_lw_out(m) = ( surf%frac(ind_veg_wall,m)  *      &
    3283                                              surf%emissivity(ind_veg_wall,m)   &
    3284                                            + surf%frac(ind_pav_green,m) *      &
    3285                                              surf%emissivity(ind_pav_green,m)  &
    3286                                            + surf%frac(ind_wat_win,m)   *      &
    3287                                              surf%emissivity(ind_wat_win,m)    &
     3284                      surf%rad_lw_out(m) = ( surf%frac(m,ind_veg_wall)  *      &
     3285                                             surf%emissivity(m,ind_veg_wall)   &
     3286                                           + surf%frac(m,ind_pav_green) *      &
     3287                                             surf%emissivity(m,ind_pav_green)  &
     3288                                           + surf%frac(m,ind_wat_win)   *      &
     3289                                             surf%emissivity(m,ind_wat_win)    &
    32883290                                           )                                   &
    32893291                                           * sigma_sb                          &
     
    32913293                   
    32923294                      surf%rad_lw_out_change_0(m) =                            &
    3293                                          ( surf%frac(ind_veg_wall,m)  *        &
    3294                                            surf%emissivity(ind_veg_wall,m)     &
    3295                                          + surf%frac(ind_pav_green,m) *        &
    3296                                            surf%emissivity(ind_pav_green,m)    &
    3297                                          + surf%frac(ind_wat_win,m)   *        &
    3298                                            surf%emissivity(ind_wat_win,m)      &
     3295                                         ( surf%frac(m,ind_veg_wall)  *        &
     3296                                           surf%emissivity(m,ind_veg_wall)     &
     3297                                         + surf%frac(m,ind_pav_green) *        &
     3298                                           surf%emissivity(im,ind_pav_green)    &
     3299                                         + surf%frac(m,ind_wat_win)   *        &
     3300                                           surf%emissivity(m,ind_wat_win)      &
    32993301                                         ) * 4.0_wp * sigma_sb                 &
    33003302                                         * ( surf%pt_surface(m) * exner(k) )**3
     
    33403342!
    33413343!--                Weighted average according to surface fraction.
    3342                    surf%rad_sw_out(m) = ( surf%frac(ind_veg_wall,m)  *         &
    3343                                           surf%albedo(ind_veg_wall,m)          &
    3344                                         + surf%frac(ind_pav_green,m) *         &
    3345                                           surf%albedo(ind_pav_green,m)         &
    3346                                         + surf%frac(ind_wat_win,m)   *         &
    3347                                           surf%albedo(ind_wat_win,m) )         &
     3344                   surf%rad_sw_out(m) = ( surf%frac(m,ind_veg_wall)  *         &
     3345                                          surf%albedo(m,ind_veg_wall)          &
     3346                                        + surf%frac(m,ind_pav_green) *         &
     3347                                          surf%albedo(m,ind_pav_green)         &
     3348                                        + surf%frac(m,ind_wat_win)   *         &
     3349                                          surf%albedo(m,ind_wat_win) )         &
    33483350                                        * surf%rad_sw_in(m)
    33493351
    3350                    surf%rad_lw_out(m) = ( surf%frac(ind_veg_wall,m)  *         &
    3351                                           surf%emissivity(ind_veg_wall,m)      &
    3352                                         + surf%frac(ind_pav_green,m) *         &
    3353                                           surf%emissivity(ind_pav_green,m)     &
    3354                                         + surf%frac(ind_wat_win,m)   *         &
    3355                                           surf%emissivity(ind_wat_win,m)       &
     3352                   surf%rad_lw_out(m) = ( surf%frac(m,ind_veg_wall)  *         &
     3353                                          surf%emissivity(m,ind_veg_wall)      &
     3354                                        + surf%frac(m,ind_pav_green) *         &
     3355                                          surf%emissivity(m,ind_pav_green)     &
     3356                                        + surf%frac(m,ind_wat_win)   *         &
     3357                                          surf%emissivity(m,ind_wat_win)       &
    33563358                                        )                                      &
    33573359                                        * sigma_sb                             &
     
    33593361
    33603362                   surf%rad_lw_out_change_0(m) =                               &
    3361                                       ( surf%frac(ind_veg_wall,m)  *           &
    3362                                         surf%emissivity(ind_veg_wall,m)        &
    3363                                       + surf%frac(ind_pav_green,m) *           &
    3364                                         surf%emissivity(ind_pav_green,m)       &
    3365                                       + surf%frac(ind_wat_win,m)   *           &
    3366                                         surf%emissivity(ind_wat_win,m)         &
     3363                                      ( surf%frac(m,ind_veg_wall)  *           &
     3364                                        surf%emissivity(m,ind_veg_wall)        &
     3365                                      + surf%frac(m,ind_pav_green) *           &
     3366                                        surf%emissivity(m,ind_pav_green)       &
     3367                                      + surf%frac(m,ind_wat_win)   *           &
     3368                                        surf%emissivity(m,ind_wat_win)         &
    33673369                                      ) * 4.0_wp * sigma_sb                    &
    33683370                                      * ( surf%pt_surface(m) * exner(k) )**3
     
    35503552!--                calculated fluxes below are not actually used as they are
    35513553!--                overwritten in radiation_interaction.
    3552                    surf%rad_sw_out(m) = ( surf%frac(ind_veg_wall,m)  *         &
    3553                                           surf%albedo(ind_veg_wall,m)          &
    3554                                         + surf%frac(ind_pav_green,m) *         &
    3555                                           surf%albedo(ind_pav_green,m)         &
    3556                                         + surf%frac(ind_wat_win,m)   *         &
    3557                                           surf%albedo(ind_wat_win,m) )         &
     3554                   surf%rad_sw_out(m) = ( surf%frac(m,ind_veg_wall)  *         &
     3555                                          surf%albedo(m,ind_veg_wall)          &
     3556                                        + surf%frac(m,ind_pav_green) *         &
     3557                                          surf%albedo(m,ind_pav_green)         &
     3558                                        + surf%frac(m,ind_wat_win)   *         &
     3559                                          surf%albedo(m,ind_wat_win) )         &
    35583560                                        * surf%rad_sw_in(m)
    35593561
    3560                    surf%rad_lw_out(m) = ( surf%frac(ind_veg_wall,m)  *         &
    3561                                           surf%emissivity(ind_veg_wall,m)      &
    3562                                         + surf%frac(ind_pav_green,m) *         &
    3563                                           surf%emissivity(ind_pav_green,m)     &
    3564                                         + surf%frac(ind_wat_win,m)   *         &
    3565                                           surf%emissivity(ind_wat_win,m)       &
     3562                   surf%rad_lw_out(m) = ( surf%frac(m,ind_veg_wall)  *         &
     3563                                          surf%emissivity(m,ind_veg_wall)      &
     3564                                        + surf%frac(m,ind_pav_green) *         &
     3565                                          surf%emissivity(m,ind_pav_green)     &
     3566                                        + surf%frac(m,ind_wat_win)   *         &
     3567                                          surf%emissivity(m,ind_wat_win)       &
    35663568                                        )                                      &
    35673569                                        * sigma_sb                             &
     
    35693571
    35703572                   surf%rad_lw_out_change_0(m) =                               &
    3571                                       ( surf%frac(ind_veg_wall,m)  *           &
    3572                                         surf%emissivity(ind_veg_wall,m)        &
    3573                                       + surf%frac(ind_pav_green,m) *           &
    3574                                         surf%emissivity(ind_pav_green,m)       &
    3575                                       + surf%frac(ind_wat_win,m)   *           &
    3576                                         surf%emissivity(ind_wat_win,m)         &
     3573                                      ( surf%frac(m,ind_veg_wall)  *           &
     3574                                        surf%emissivity(m,ind_veg_wall)        &
     3575                                      + surf%frac(m,ind_pav_green) *           &
     3576                                        surf%emissivity(m,ind_pav_green)       &
     3577                                      + surf%frac(m,ind_wat_win)   *           &
     3578                                        surf%emissivity(m,ind_wat_win)         &
    35773579                                      ) * 4.0_wp * sigma_sb                    &
    35783580                                      * ( surf%pt_surface(m) * exner(nzb) )** 3
     
    37493751!
    37503752!--                Weighted average according to surface fraction.
    3751                    surf%rad_lw_out(m) = ( surf%frac(ind_veg_wall,m)  *         &
    3752                                           surf%emissivity(ind_veg_wall,m)      &
    3753                                         + surf%frac(ind_pav_green,m) *         &
    3754                                           surf%emissivity(ind_pav_green,m)     &
    3755                                         + surf%frac(ind_wat_win,m)   *         &
    3756                                           surf%emissivity(ind_wat_win,m)       &
     3753                   surf%rad_lw_out(m) = ( surf%frac(m,ind_veg_wall)  *         &
     3754                                          surf%emissivity(m,ind_veg_wall)      &
     3755                                        + surf%frac(m,ind_pav_green) *         &
     3756                                          surf%emissivity(m,ind_pav_green)     &
     3757                                        + surf%frac(m,ind_wat_win)   *         &
     3758                                          surf%emissivity(m,ind_wat_win)       &
    37573759                                        )                                      &
    37583760                                      * sigma_sb                               &
     
    37623764                                       + surf%rad_lw_out(m) )                  &
    37633765                                       / ( 1.0_wp -                            &
    3764                                           ( surf%frac(ind_veg_wall,m)  *       &
    3765                                             surf%albedo(ind_veg_wall,m)        &
    3766                                          +  surf%frac(ind_pav_green,m) *       &
    3767                                             surf%albedo(ind_pav_green,m)       &
    3768                                          +  surf%frac(ind_wat_win,m)   *       &
    3769                                             surf%albedo(ind_wat_win,m) )       &
     3766                                          ( surf%frac(m,ind_veg_wall)  *       &
     3767                                            surf%albedo(m,ind_veg_wall)        &
     3768                                         +  surf%frac(m,ind_pav_green) *       &
     3769                                            surf%albedo(m,ind_pav_green)       &
     3770                                         +  surf%frac(m,ind_wat_win)   *       &
     3771                                            surf%albedo(m,ind_wat_win) )       &
    37703772                                         )
    37713773
    3772                    surf%rad_sw_out(m) = ( surf%frac(ind_veg_wall,m)  *         &
    3773                                           surf%albedo(ind_veg_wall,m)          &
    3774                                         + surf%frac(ind_pav_green,m) *         &
    3775                                           surf%albedo(ind_pav_green,m)         &
    3776                                         + surf%frac(ind_wat_win,m)   *         &
    3777                                           surf%albedo(ind_wat_win,m) )         &
     3774                   surf%rad_sw_out(m) = ( surf%frac(m,ind_veg_wall)  *         &
     3775                                          surf%albedo(m,ind_veg_wall)          &
     3776                                        + surf%frac(m,ind_pav_green) *         &
     3777                                          surf%albedo(m,ind_pav_green)         &
     3778                                        + surf%frac(m,ind_wat_win)   *         &
     3779                                          surf%albedo(m,ind_wat_win) )         &
    37783780                                      * surf%rad_sw_in(m)
    37793781
     
    45314533!--             surfaces.
    45324534                DO  m = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    4533                    rrtm_emis = surf_lsm_h%frac(ind_veg_wall,m)  *              &
    4534                                surf_lsm_h%emissivity(ind_veg_wall,m)  +        &
    4535                                surf_lsm_h%frac(ind_pav_green,m) *              &
    4536                                surf_lsm_h%emissivity(ind_pav_green,m) +        &
    4537                                surf_lsm_h%frac(ind_wat_win,m)   *              &
    4538                                surf_lsm_h%emissivity(ind_wat_win,m)
     4535                   rrtm_emis = surf_lsm_h%frac(m,ind_veg_wall)  *              &
     4536                               surf_lsm_h%emissivity(m,ind_veg_wall)  +        &
     4537                               surf_lsm_h%frac(m,ind_pav_green) *              &
     4538                               surf_lsm_h%emissivity(m,ind_pav_green) +        &
     4539                               surf_lsm_h%frac(m,ind_wat_win)   *              &
     4540                               surf_lsm_h%emissivity(m,ind_wat_win)
    45394541                   rrtm_tsfc = surf_lsm_h%pt_surface(m) * exner(nzb)
    45404542                ENDDO             
    45414543                DO  m = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    4542                    rrtm_emis = surf_usm_h%frac(ind_veg_wall,m)  *              &
    4543                                surf_usm_h%emissivity(ind_veg_wall,m)  +        &
    4544                                surf_usm_h%frac(ind_pav_green,m) *              &
    4545                                surf_usm_h%emissivity(ind_pav_green,m) +        &
    4546                                surf_usm_h%frac(ind_wat_win,m)   *              &
    4547                                surf_usm_h%emissivity(ind_wat_win,m)
     4544                   rrtm_emis = surf_usm_h%frac(m,ind_veg_wall)  *              &
     4545                               surf_usm_h%emissivity(m,ind_veg_wall)  +        &
     4546                               surf_usm_h%frac(m,ind_pav_green) *              &
     4547                               surf_usm_h%emissivity(m,ind_pav_green) +        &
     4548                               surf_usm_h%frac(m,ind_wat_win)   *              &
     4549                               surf_usm_h%emissivity(m,ind_wat_win)
    45484550                   rrtm_tsfc = surf_usm_h%pt_surface(m) * exner(nzb)
    45494551                ENDDO
     
    46724674                   DO  m = surf_lsm_h%start_index(j,i),                        &
    46734675                           surf_lsm_h%end_index(j,i)
    4674                       rrtm_asdir(1)  = SUM( surf_lsm_h%frac(:,m) *             &
     4676                      rrtm_asdir(1)  = SUM( surf_lsm_h%frac(m,:) *             &
    46754677                                            surf_lsm_h%rrtm_asdir(:,m) )
    4676                       rrtm_asdif(1)  = SUM( surf_lsm_h%frac(:,m) *             &
     4678                      rrtm_asdif(1)  = SUM( surf_lsm_h%frac(m,:) *             &
    46774679                                            surf_lsm_h%rrtm_asdif(:,m) )
    4678                       rrtm_aldir(1)  = SUM( surf_lsm_h%frac(:,m) *             &
     4680                      rrtm_aldir(1)  = SUM( surf_lsm_h%frac(m,:) *             &
    46794681                                            surf_lsm_h%rrtm_aldir(:,m) )
    4680                       rrtm_aldif(1)  = SUM( surf_lsm_h%frac(:,m) *             &
     4682                      rrtm_aldif(1)  = SUM( surf_lsm_h%frac(m,:) *             &
    46814683                                            surf_lsm_h%rrtm_aldif(:,m) )
    46824684                   ENDDO             
    46834685                   DO  m = surf_usm_h%start_index(j,i),                        &
    46844686                           surf_usm_h%end_index(j,i)
    4685                       rrtm_asdir(1)  = SUM( surf_usm_h%frac(:,m) *             &
     4687                      rrtm_asdir(1)  = SUM( surf_usm_h%frac(m,:) *             &
    46864688                                            surf_usm_h%rrtm_asdir(:,m) )
    4687                       rrtm_asdif(1)  = SUM( surf_usm_h%frac(:,m) *             &
     4689                      rrtm_asdif(1)  = SUM( surf_usm_h%frac(m,:) *             &
    46884690                                            surf_usm_h%rrtm_asdif(:,m) )
    4689                       rrtm_aldir(1)  = SUM( surf_usm_h%frac(:,m) *             &
     4691                      rrtm_aldir(1)  = SUM( surf_usm_h%frac(m,:) *             &
    46904692                                            surf_usm_h%rrtm_aldir(:,m) )
    4691                       rrtm_aldif(1)  = SUM( surf_usm_h%frac(:,m) *             &
     4693                      rrtm_aldif(1)  = SUM( surf_usm_h%frac(m,:) *             &
    46924694                                            surf_usm_h%rrtm_aldif(:,m) )
    46934695                   ENDDO
     
    49894991!
    49904992!--              Ocean
    4991                  IF ( surf%albedo_type(ind_type,m) == 1 )  THEN
    4992                     surf%rrtm_aldir(ind_type,m) = 0.026_wp /                    &
     4993                 IF ( surf%albedo_type(m,ind_type) == 1 )  THEN
     4994                    surf%rrtm_aldir(m,ind_type) = 0.026_wp /                    &
    49934995                                                ( cos_zenith**1.7_wp + 0.065_wp )&
    49944996                                     + 0.15_wp * ( cos_zenith - 0.1_wp )         &
    49954997                                               * ( cos_zenith - 0.5_wp )         &
    49964998                                               * ( cos_zenith - 1.0_wp )
    4997                     surf%rrtm_asdir(ind_type,m) = surf%rrtm_aldir(ind_type,m)
     4999                    surf%rrtm_asdir(m,ind_type) = surf%rrtm_aldir(m,ind_type)
    49985000!
    49995001!--              Snow
    5000                  ELSEIF ( surf%albedo_type(ind_type,m) == 16 )  THEN
     5002                 ELSEIF ( surf%albedo_type(m,ind_type) == 16 )  THEN
    50015003                    IF ( cos_zenith < 0.5_wp )  THEN
    5002                        surf%rrtm_aldir(ind_type,m) =                           &
    5003                                  0.5_wp * ( 1.0_wp - surf%aldif(ind_type,m) )  &
     5004                       surf%rrtm_aldir(m,ind_type) =                           &
     5005                                 0.5_wp * ( 1.0_wp - surf%aldif(im,ind_type) )  &
    50045006                                        * ( ( 3.0_wp / ( 1.0_wp + 4.0_wp       &
    50055007                                        * cos_zenith ) ) - 1.0_wp )
    5006                        surf%rrtm_asdir(ind_type,m) =                           &
    5007                                  0.5_wp * ( 1.0_wp - surf%asdif(ind_type,m) )  &
     5008                       surf%rrtm_asdir(m,ind_type) =                           &
     5009                                 0.5_wp * ( 1.0_wp - surf%asdif(m,ind_type) )  &
    50085010                                        * ( ( 3.0_wp / ( 1.0_wp + 4.0_wp       &
    50095011                                        * cos_zenith ) ) - 1.0_wp )
    50105012
    5011                        surf%rrtm_aldir(ind_type,m) =                           &
    5012                                        MIN(0.98_wp, surf%rrtm_aldir(ind_type,m))
    5013                        surf%rrtm_asdir(ind_type,m) =                           &
    5014                                        MIN(0.98_wp, surf%rrtm_asdir(ind_type,m))
     5013                       surf%rrtm_aldir(m,ind_type) =                           &
     5014                                       MIN(0.98_wp, surf%rrtm_aldir(m,ind_type))
     5015                       surf%rrtm_asdir(m,ind_type) =                           &
     5016                                       MIN(0.98_wp, surf%rrtm_asdir(m,ind_type))
    50155017                    ELSE
    5016                        surf%rrtm_aldir(ind_type,m) = surf%aldif(ind_type,m)
    5017                        surf%rrtm_asdir(ind_type,m) = surf%asdif(ind_type,m)
     5018                       surf%rrtm_aldir(m,ind_type) = surf%aldif(m,ind_type)
     5019                       surf%rrtm_asdir(m,ind_type) = surf%asdif(m,ind_type)
    50185020                    ENDIF
    50195021!
    50205022!--              Sea ice
    5021                  ELSEIF ( surf%albedo_type(ind_type,m) == 15 )  THEN
    5022                     surf%rrtm_aldir(ind_type,m) = surf%aldif(ind_type,m)
    5023                     surf%rrtm_asdir(ind_type,m) = surf%asdif(ind_type,m)
     5023                 ELSEIF ( surf%albedo_type(m,ind_type) == 15 )  THEN
     5024                    surf%rrtm_aldir(m,ind_type) = surf%aldif(m,ind_type)
     5025                    surf%rrtm_asdir(m,ind_type) = surf%asdif(m,ind_type)
    50245026
    50255027!
    50265028!--              Asphalt
    5027                  ELSEIF ( surf%albedo_type(ind_type,m) == 17 )  THEN
    5028                     surf%rrtm_aldir(ind_type,m) = surf%aldif(ind_type,m)
    5029                     surf%rrtm_asdir(ind_type,m) = surf%asdif(ind_type,m)
     5029                 ELSEIF ( surf%albedo_type(m,ind_type) == 17 )  THEN
     5030                    surf%rrtm_aldir(m,ind_type) = surf%aldif(m,ind_type)
     5031                    surf%rrtm_asdir(m,ind_type) = surf%asdif(m,ind_type)
    50305032
    50315033
    50325034!
    50335035!--              Bare soil
    5034                  ELSEIF ( surf%albedo_type(ind_type,m) == 18 )  THEN
    5035                     surf%rrtm_aldir(ind_type,m) = surf%aldif(ind_type,m)
    5036                     surf%rrtm_asdir(ind_type,m) = surf%asdif(ind_type,m)
     5036                 ELSEIF ( surf%albedo_type(m,ind_type) == 18 )  THEN
     5037                    surf%rrtm_aldir(m,ind_type) = surf%aldif(m,ind_type)
     5038                    surf%rrtm_asdir(m,ind_type) = surf%asdif(m,ind_type)
    50375039
    50385040!
    50395041!--              Land surfaces
    50405042                 ELSE
    5041                     SELECT CASE ( surf%albedo_type(ind_type,m) )
     5043                    SELECT CASE ( surf%albedo_type(m,ind_type) )
    50425044
    50435045!
    50445046!--                    Surface types with strong zenith dependence
    50455047                       CASE ( 1, 2, 3, 4, 11, 12, 13 )
    5046                           surf%rrtm_aldir(ind_type,m) =                        &
    5047                                 surf%aldif(ind_type,m) * 1.4_wp /              &
     5048                          surf%rrtm_aldir(m,ind_type) =                        &
     5049                                surf%aldif(m,ind_type) * 1.4_wp /              &
    50485050                                           ( 1.0_wp + 0.8_wp * cos_zenith )
    5049                           surf%rrtm_asdir(ind_type,m) =                        &
    5050                                 surf%asdif(ind_type,m) * 1.4_wp /              &
     5051                          surf%rrtm_asdir(m,ind_type) =                        &
     5052                                surf%asdif(m,ind_type) * 1.4_wp /              &
    50515053                                           ( 1.0_wp + 0.8_wp * cos_zenith )
    50525054!
    50535055!--                    Surface types with weak zenith dependence
    50545056                       CASE ( 5, 6, 7, 8, 9, 10, 14 )
    5055                           surf%rrtm_aldir(ind_type,m) =                        &
    5056                                 surf%aldif(ind_type,m) * 1.1_wp /              &
     5057                          surf%rrtm_aldir(m,ind_type) =                        &
     5058                                surf%aldif(m,ind_type) * 1.1_wp /              &
    50575059                                           ( 1.0_wp + 0.2_wp * cos_zenith )
    5058                           surf%rrtm_asdir(ind_type,m) =                        &
    5059                                 surf%asdif(ind_type,m) * 1.1_wp /              &
     5060                          surf%rrtm_asdir(m,ind_type) =                        &
     5061                                surf%asdif(m,ind_type) * 1.1_wp /              &
    50605062                                           ( 1.0_wp + 0.2_wp * cos_zenith )
    50615063
     
    50665068!
    50675069!--              Diffusive albedo is taken from Table 2
    5068                  surf%rrtm_aldif(ind_type,m) = surf%aldif(ind_type,m)
    5069                  surf%rrtm_asdif(ind_type,m) = surf%asdif(ind_type,m)
     5070                 surf%rrtm_aldif(m,ind_type) = surf%aldif(m,ind_type)
     5071                 surf%rrtm_asdif(m,ind_type) = surf%asdif(m,ind_type)
    50705072              ENDDO
    50715073           ENDDO
     
    58835885     DO  i = nxl, nxr
    58845886        DO  j = nys, nyn
    5885 !--           urban
     5887!
     5888!--        urban
    58865889           DO  m = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i)
    5887               surfoutll(mm) = SUM ( surf_usm_h%frac(:,m) *                  &
    5888                                     surf_usm_h%emissivity(:,m) )            &
     5890              surfoutll(mm) = SUM ( surf_usm_h%frac(m,:) *                  &
     5891                                    surf_usm_h%emissivity(m,:) )            &
    58895892                                  * sigma_sb                                &
    58905893                                  * surf_usm_h%pt_surface(m)**4
    5891               albedo_surf(mm) = SUM ( surf_usm_h%frac(:,m) *                &
    5892                                       surf_usm_h%albedo(:,m) )
    5893               emiss_surf(mm)  = SUM ( surf_usm_h%frac(:,m) *                &
    5894                                       surf_usm_h%emissivity(:,m) )
     5894              albedo_surf(mm) = SUM ( surf_usm_h%frac(m,:) *                &
     5895                                      surf_usm_h%albedo(m,:) )
     5896              emiss_surf(mm)  = SUM ( surf_usm_h%frac(m,:) *                &
     5897                                      surf_usm_h%emissivity(m,:) )
    58955898              mm = mm + 1
    58965899           ENDDO
    5897 !--           land
     5900!
     5901!--        land
    58985902           DO  m = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i)
    5899               surfoutll(mm) = SUM ( surf_lsm_h%frac(:,m) *                  &
    5900                                     surf_lsm_h%emissivity(:,m) )            &
     5903              surfoutll(mm) = SUM ( surf_lsm_h%frac(m,:) *                  &
     5904                                    surf_lsm_h%emissivity(m,:) )            &
    59015905                                  * sigma_sb                                &
    59025906                                  * surf_lsm_h%pt_surface(m)**4
    5903               albedo_surf(mm) = SUM ( surf_lsm_h%frac(:,m) *                &
    5904                                       surf_lsm_h%albedo(:,m) )
    5905               emiss_surf(mm)  = SUM ( surf_lsm_h%frac(:,m) *                &
    5906                                       surf_lsm_h%emissivity(:,m) )
     5907              albedo_surf(mm) = SUM ( surf_lsm_h%frac(m,:) *                &
     5908                                      surf_lsm_h%albedo(m,:) )
     5909              emiss_surf(mm)  = SUM ( surf_lsm_h%frac(m,:) *                &
     5910                                      surf_lsm_h%emissivity(m,:) )
    59075911              mm = mm + 1
    59085912           ENDDO
     
    59105914     ENDDO
    59115915!
    5912 !--     Vertical walls
     5916!--  Vertical walls
    59135917     DO  i = nxl, nxr
    59145918        DO  j = nys, nyn
    59155919           DO  ll = 0, 3
    59165920              l = reorder(ll)
    5917 !--              urban
     5921!
     5922!--           urban
    59185923              DO  m = surf_usm_v(l)%start_index(j,i),                       &
    59195924                      surf_usm_v(l)%end_index(j,i)
    5920                  surfoutll(mm) = SUM ( surf_usm_v(l)%frac(:,m) *            &
    5921                                        surf_usm_v(l)%emissivity(:,m) )      &
     5925                 surfoutll(mm) = SUM ( surf_usm_v(l)%frac(m,:) *            &
     5926                                       surf_usm_v(l)%emissivity(m,:) )      &
    59225927                                  * sigma_sb                                &
    59235928                                  * surf_usm_v(l)%pt_surface(m)**4
    5924                  albedo_surf(mm) = SUM ( surf_usm_v(l)%frac(:,m) *          &
    5925                                          surf_usm_v(l)%albedo(:,m) )
    5926                  emiss_surf(mm)  = SUM ( surf_usm_v(l)%frac(:,m) *          &
    5927                                          surf_usm_v(l)%emissivity(:,m) )
     5929                 albedo_surf(mm) = SUM ( surf_usm_v(l)%frac(m,:) *          &
     5930                                         surf_usm_v(l)%albedo(m,:) )
     5931                 emiss_surf(mm)  = SUM ( surf_usm_v(l)%frac(m,:) *          &
     5932                                         surf_usm_v(l)%emissivity(m,:) )
    59285933                 mm = mm + 1
    59295934              ENDDO
    5930 !--              land
     5935!
     5936!--           land
    59315937              DO  m = surf_lsm_v(l)%start_index(j,i),                       &
    59325938                      surf_lsm_v(l)%end_index(j,i)
    5933                  surfoutll(mm) = SUM ( surf_lsm_v(l)%frac(:,m) *            &
    5934                                        surf_lsm_v(l)%emissivity(:,m) )      &
     5939                 surfoutll(mm) = SUM ( surf_lsm_v(l)%frac(m,:) *            &
     5940                                       surf_lsm_v(l)%emissivity(m,:) )      &
    59355941                                  * sigma_sb                                &
    59365942                                  * surf_lsm_v(l)%pt_surface(m)**4
    5937                  albedo_surf(mm) = SUM ( surf_lsm_v(l)%frac(:,m) *          &
    5938                                          surf_lsm_v(l)%albedo(:,m) )
    5939                  emiss_surf(mm)  = SUM ( surf_lsm_v(l)%frac(:,m) *          &
    5940                                          surf_lsm_v(l)%emissivity(:,m) )
     5943                 albedo_surf(mm) = SUM ( surf_lsm_v(l)%frac(m,:) *          &
     5944                                         surf_lsm_v(l)%albedo(m,:) )
     5945                 emiss_surf(mm)  = SUM ( surf_lsm_v(l)%frac(m,:) *          &
     5946                                         surf_lsm_v(l)%emissivity(m,:) )
    59415947                 mm = mm + 1
    59425948              ENDDO
     
    59455951     ENDDO
    59465952
    5947      IF ( trace_fluxes_above >= 0._wp )  THEN
     5953     IF ( trace_fluxes_above >= 0.0_wp )  THEN
    59485954        CALL radiation_print_debug_surf( 'surfoutll before initial pass', surfoutll )
    59495955        CALL radiation_print_debug_horz( 'rad_lw_in_diff before initial pass', rad_lw_in_diff )
     
    60086014        j = FLOOR(ACOS(cos_zenith) / pi * raytrace_discrete_elevs)
    60096015        i = MODULO(NINT(ATAN2(sun_dir_lon, sun_dir_lat)               &
    6010                         / (2._wp*pi) * raytrace_discrete_azims-.5_wp, iwp), &
     6016                        / (2.0_wp*pi) * raytrace_discrete_azims-0.5_wp, iwp), &
    60116017                   raytrace_discrete_azims)
    60126018        isd = dsidir_rev(j, i)
     
    60246030           i = mrtbl(ix, imrt)
    60256031           mrtinsw(imrt) = mrtinsw(imrt) + mrtdsit(imrt, isd) * rad_sw_in_dir(j,i) &
    6026                                      / cos_zenith / 4._wp ! normal to sphere
     6032                                     / cos_zenith / 4.0_wp ! normal to sphere
    60276033        ENDDO
    60286034     ENDIF
     
    60396045     IF ( npcbl > 0 )  THEN
    60406046
    6041          pcbinswdir(:) = 0._wp
    6042          pcbinswdif(:) = 0._wp
    6043          pcbinlw(:) = 0._wp
     6047         pcbinswdir(:) = 0.0_wp
     6048         pcbinswdif(:) = 0.0_wp
     6049         pcbinlw(:) = 0.0_wp
    60446050
    60456051         DO icsf = 1, ncsfl
     
    60656071                IF ( cos_zenith > 0 )  THEN
    60666072!--                Estimate directed box absorption
    6067                    pc_abs_frac = 1._wp - exp(pc_abs_eff * lad_s(k,j,i))
     6073                   pc_abs_frac = 1.0_wp - exp(pc_abs_eff * lad_s(k,j,i))
    60686074!
    60696075!--                isd has already been established, see 1)
     
    60916097     ENDIF
    60926098
    6093      IF ( trace_fluxes_above >= 0._wp )  THEN
     6099     IF ( trace_fluxes_above >= 0.0_wp )  THEN
    60946100        CALL radiation_print_debug_surf( 'surfinl after initial pass', surfinl )
    60956101        CALL radiation_print_debug_surf( 'surfinlwdif after initial pass', surfinlwdif )
     
    61186124     ENDIF
    61196125
    6120      IF ( trace_fluxes_above >= 0._wp )  THEN
     6126     IF ( trace_fluxes_above >= 0.0_wp )  THEN
    61216127        CALL radiation_print_debug_surf( 'surfinl after PC emiss', surfinl )
    61226128     ENDIF
     
    61356141        nrefsteps = 0
    61366142        surfoutsl = albedo_surf * surfins
    6137         surfoutll = (1._wp - emiss_surf) * surfinl
     6143        surfoutll = (1.0_wp - emiss_surf) * surfinl
    61386144        surfoutsw = surfoutsw + surfoutsl
    61396145        surfoutlw = surfoutlw + surfoutll
     
    61486154!
    61496155!--      for non-transparent surfaces, longwave albedo is 1 - emissivity
    6150          surfoutll = (1._wp - emiss_surf) * surfinl
    6151 
    6152          IF ( trace_fluxes_above >= 0._wp )  THEN
     6156         surfoutll = (1.0_wp - emiss_surf) * surfinl
     6157
     6158         IF ( trace_fluxes_above >= 0.0_wp )  THEN
    61536159            CALL radiation_print_debug_surf( 'surfoutll before reflective pass', surfoutll, refstep )
    61546160            CALL radiation_print_debug_surf( 'surfoutsl before reflective pass', surfoutsl, refstep )
     
    61786184!
    61796185!--      Reset for the input from next reflective pass
    6180          surfins = 0._wp
    6181          surfinl = 0._wp
     6186         surfins = 0.0_wp
     6187         surfinl = 0.00_wp
    61826188!
    61836189!--      Reflected radiation
     
    62226228         ENDDO
    62236229
    6224          IF ( trace_fluxes_above >= 0._wp )  THEN
     6230         IF ( trace_fluxes_above >= 0.0_wp )  THEN
    62256231            CALL radiation_print_debug_surf( 'surfinl after reflected pass', surfinl, refstep )
    62266232            CALL radiation_print_debug_surf( 'surfins after reflected pass', surfins, refstep )
     
    62686274     IF ( nmrtbl > 0 )  THEN
    62696275        IF ( mrt_include_sw )  THEN
    6270            mrt(:) = ((mrtinsw(:) + mrtinlw(:)) / sigma_sb) ** .25_wp
     6276           mrt(:) = ((mrtinsw(:) + mrtinlw(:)) / sigma_sb) ** 0.25_wp
    62716277        ELSE
    6272            mrt(:) = (mrtinlw(:) / sigma_sb) ** .25_wp
     6278           mrt(:) = (mrtinlw(:) / sigma_sb) ** 0.25_wp
    62736279        ENDIF
    62746280     ENDIF
Note: See TracChangeset for help on using the changeset viewer.