Changeset 3351


Ignore:
Timestamp:
Oct 15, 2018 6:40:42 PM (3 years ago)
Author:
suehring
Message:

Do not overwrite values of albedo in radiation_init in case albedo has been already initialized in the urban-surface model via ASCII input

Location:
palm/trunk/SOURCE
Files:
3 edited

Legend:

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

    r3337 r3351  
    2828! -----------------
    2929! $Id$
     30! Do not overwrite values of spectral and broadband albedo during initialization
     31! if they are already initialized in the urban-surface model via ASCII input.
     32!
     33! 3337 2018-10-12 15:17:09Z kanani
    3034! - New RTM version 2.9: (Pavel Krc, Jaroslav Resler, ICS, Prague)
    3135!   added calculation of the MRT inside the RTM module
     
    17531757!
    17541758!--       Allocate arrays for broadband albedo, and level 1 initialization
    1755 !--       via namelist paramter, unless already allocated.
     1759!--       via namelist paramter, unless not already allocated.
    17561760          IF ( .NOT. ALLOCATED(surf_lsm_h%albedo) )  THEN
    17571761             ALLOCATE( surf_lsm_h%albedo(0:2,1:surf_lsm_h%ns)     )
     
    17751779!
    17761780!--       Level 2 initialization of broadband albedo via given albedo_type.
    1777 !--       Only if albedo_type is non-zero
     1781!--       Only if albedo_type is non-zero. In case of urban surface and
     1782!--       input data is read from ASCII file, albedo_type will be zero, so that
     1783!--       albedo won't be overwritten.
    17781784          DO  m = 1, surf_lsm_h%ns
    17791785             IF ( surf_lsm_h%albedo_type(ind_veg_wall,m) /= 0 )                &
     
    19691975          ENDIF
    19701976          IF ( surf_usm_h%ns > 0 )  THEN
    1971              surf_usm_h%aldif  = albedo_lw_dif
    1972              surf_usm_h%aldir  = albedo_lw_dir
    1973              surf_usm_h%asdif  = albedo_sw_dif
    1974              surf_usm_h%asdir  = albedo_sw_dir
    1975              surf_usm_h%albedo = albedo_sw_dif
     1977             IF ( surf_usm_h%albedo_from_ascii )  THEN
     1978                surf_usm_h%aldif  = surf_usm_h%albedo
     1979                surf_usm_h%aldir  = surf_usm_h%albedo
     1980                surf_usm_h%asdif  = surf_usm_h%albedo
     1981                surf_usm_h%asdir  = surf_usm_h%albedo
     1982             ELSE
     1983                surf_usm_h%aldif  = albedo_lw_dif
     1984                surf_usm_h%aldir  = albedo_lw_dir
     1985                surf_usm_h%asdif  = albedo_sw_dif
     1986                surf_usm_h%asdir  = albedo_sw_dir
     1987                surf_usm_h%albedo = albedo_sw_dif
     1988             ENDIF
    19761989          ENDIF
    19771990
     
    19872000
    19882001             IF ( surf_usm_v(l)%ns > 0 )  THEN
    1989                 surf_usm_v(l)%aldif  = albedo_lw_dif
    1990                 surf_usm_v(l)%aldir  = albedo_lw_dir
    1991                 surf_usm_v(l)%asdif  = albedo_sw_dif
    1992                 surf_usm_v(l)%asdir  = albedo_sw_dir
    1993                 surf_usm_v(l)%albedo = albedo_sw_dif
     2002                IF ( surf_usm_v(l)%albedo_from_ascii )  THEN
     2003                   surf_usm_v(l)%aldif  = surf_usm_v(l)%albedo
     2004                   surf_usm_v(l)%aldir  = surf_usm_v(l)%albedo
     2005                   surf_usm_v(l)%asdif  = surf_usm_v(l)%albedo
     2006                   surf_usm_v(l)%asdir  = surf_usm_v(l)%albedo
     2007                ELSE
     2008                   surf_usm_v(l)%aldif  = albedo_lw_dif
     2009                   surf_usm_v(l)%aldir  = albedo_lw_dir
     2010                   surf_usm_v(l)%asdif  = albedo_sw_dif
     2011                   surf_usm_v(l)%asdir  = albedo_sw_dir
     2012                ENDIF
    19942013             ENDIF
    19952014          ENDDO
     
    20192038
    20202039          ENDDO
    2021 
    2022           DO  m = 1, surf_usm_h%ns
    2023 !
    2024 !--          Spectral albedos for wall/green/window surfaces
    2025              DO  ind_type = 0, 2
    2026                 IF ( surf_usm_h%albedo_type(ind_type,m) /= 0 )  THEN
    2027                    surf_usm_h%aldif(ind_type,m) =                              &
     2040!
     2041!--       For urban surface only if albedo has not been already initialized
     2042!--       in the urban-surface model via the ASCII file.
     2043          IF ( .NOT. surf_usm_h%albedo_from_ascii )  THEN
     2044             DO  m = 1, surf_usm_h%ns
     2045!
     2046!--             Spectral albedos for wall/green/window surfaces
     2047                DO  ind_type = 0, 2
     2048                   IF ( surf_usm_h%albedo_type(ind_type,m) /= 0 )  THEN
     2049                      surf_usm_h%aldif(ind_type,m) =                           &
    20282050                               albedo_pars(0,surf_usm_h%albedo_type(ind_type,m))
    2029                    surf_usm_h%asdif(ind_type,m) =                              &
     2051                      surf_usm_h%asdif(ind_type,m) =                           &
    20302052                               albedo_pars(1,surf_usm_h%albedo_type(ind_type,m))
    2031                    surf_usm_h%aldir(ind_type,m) =                              &
     2053                      surf_usm_h%aldir(ind_type,m) =                           &
    20322054                               albedo_pars(0,surf_usm_h%albedo_type(ind_type,m))
    2033                    surf_usm_h%asdir(ind_type,m) =                              &
     2055                      surf_usm_h%asdir(ind_type,m) =                           &
    20342056                               albedo_pars(1,surf_usm_h%albedo_type(ind_type,m))
    2035                    surf_usm_h%albedo(ind_type,m) =                             &
     2057                      surf_usm_h%albedo(ind_type,m) =                          &
    20362058                               albedo_pars(2,surf_usm_h%albedo_type(ind_type,m))
    2037                 ENDIF
     2059                   ENDIF
     2060                ENDDO
     2061
    20382062             ENDDO
    2039 
    2040           ENDDO
     2063          ENDIF
    20412064
    20422065          DO l = 0, 3
     
    20602083                ENDDO
    20612084             ENDDO
    2062 
    2063              DO  m = 1, surf_usm_v(l)%ns
    2064 !
    2065 !--             Spectral albedos for wall/green/window surfaces
    2066                 DO  ind_type = 0, 2
    2067                    IF ( surf_usm_v(l)%albedo_type(ind_type,m) /= 0 )  THEN
    2068                       surf_usm_v(l)%aldif(ind_type,m) =                        &
     2085!
     2086!--          For urban surface only if albedo has not been already initialized
     2087!--          in the urban-surface model via the ASCII file.
     2088             IF ( .NOT. surf_usm_v(l)%albedo_from_ascii )  THEN
     2089                DO  m = 1, surf_usm_v(l)%ns
     2090!
     2091!--                Spectral albedos for wall/green/window surfaces
     2092                   DO  ind_type = 0, 2
     2093                      IF ( surf_usm_v(l)%albedo_type(ind_type,m) /= 0 )  THEN
     2094                         surf_usm_v(l)%aldif(ind_type,m) =                     &
    20692095                            albedo_pars(0,surf_usm_v(l)%albedo_type(ind_type,m))
    2070                       surf_usm_v(l)%asdif(ind_type,m) =                        &
     2096                         surf_usm_v(l)%asdif(ind_type,m) =                     &
    20712097                            albedo_pars(1,surf_usm_v(l)%albedo_type(ind_type,m))
    2072                       surf_usm_v(l)%aldir(ind_type,m) =                        &
     2098                         surf_usm_v(l)%aldir(ind_type,m) =                     &
    20732099                            albedo_pars(0,surf_usm_v(l)%albedo_type(ind_type,m))
    2074                       surf_usm_v(l)%asdir(ind_type,m) =                        &
     2100                         surf_usm_v(l)%asdir(ind_type,m) =                     &
    20752101                            albedo_pars(1,surf_usm_v(l)%albedo_type(ind_type,m))
    2076                       surf_usm_v(l)%albedo(ind_type,m) =                       &
     2102                         surf_usm_v(l)%albedo(ind_type,m) =                    &
    20772103                            albedo_pars(2,surf_usm_v(l)%albedo_type(ind_type,m))
    2078                    ENDIF
     2104                      ENDIF
     2105                   ENDDO
     2106
    20792107                ENDDO
    2080 
    2081              ENDDO
     2108             ENDIF
    20822109          ENDDO
    20832110!
     
    21122139                ENDDO
    21132140             ENDDO
    2114 
    2115              DO  m = 1, surf_usm_h%ns
    2116                 i = surf_usm_h%i(m)
    2117                 j = surf_usm_h%j(m)
    2118 !
    2119 !--             Spectral albedos for wall/green/window surfaces
    2120                 DO  ind_type = 0, 2
    2121                    IF ( surf_usm_h%albedo_type(ind_type,m) == 0 )  THEN
    2122                       IF ( albedo_pars_f%pars_xy(1,j,i) /= albedo_pars_f%fill )&
    2123                          surf_usm_h%albedo(ind_type,m) =                       &
     2141!
     2142!--          For urban surface only if albedo has not been already initialized
     2143!--          in the urban-surface model via the ASCII file.
     2144             IF ( .NOT. surf_usm_h%albedo_from_ascii )  THEN
     2145                DO  m = 1, surf_usm_h%ns
     2146                   i = surf_usm_h%i(m)
     2147                   j = surf_usm_h%j(m)
     2148!
     2149!--                Spectral albedos for wall/green/window surfaces
     2150                   DO  ind_type = 0, 2
     2151                      IF ( surf_usm_h%albedo_type(ind_type,m) == 0 )  THEN
     2152                         IF ( albedo_pars_f%pars_xy(1,j,i) /= albedo_pars_f%fill )&
     2153                            surf_usm_h%albedo(ind_type,m) =                       &
    21242154                                                albedo_pars_f%pars_xy(1,j,i)
    2125                       IF ( albedo_pars_f%pars_xy(1,j,i) /= albedo_pars_f%fill )&
    2126                          surf_usm_h%aldir(ind_type,m) =                        &
     2155                         IF ( albedo_pars_f%pars_xy(1,j,i) /= albedo_pars_f%fill )&
     2156                            surf_usm_h%aldir(ind_type,m) =                        &
    21272157                                                albedo_pars_f%pars_xy(1,j,i)
    2128                       IF ( albedo_pars_f%pars_xy(2,j,i) /= albedo_pars_f%fill )&
    2129                          surf_usm_h%aldif(ind_type,m) =                        &
     2158                         IF ( albedo_pars_f%pars_xy(2,j,i) /= albedo_pars_f%fill )&
     2159                            surf_usm_h%aldif(ind_type,m) =                        &
    21302160                                                albedo_pars_f%pars_xy(2,j,i)
    2131                       IF ( albedo_pars_f%pars_xy(3,j,i) /= albedo_pars_f%fill )&
    2132                          surf_usm_h%asdir(ind_type,m) =                        &
     2161                         IF ( albedo_pars_f%pars_xy(3,j,i) /= albedo_pars_f%fill )&
     2162                            surf_usm_h%asdir(ind_type,m) =                        &
    21332163                                                albedo_pars_f%pars_xy(3,j,i)
    2134                       IF ( albedo_pars_f%pars_xy(4,j,i) /= albedo_pars_f%fill )&
    2135                          surf_usm_h%asdif(ind_type,m) =                        &
     2164                         IF ( albedo_pars_f%pars_xy(4,j,i) /= albedo_pars_f%fill )&
     2165                            surf_usm_h%asdif(ind_type,m) =                        &
    21362166                                                albedo_pars_f%pars_xy(4,j,i)
    2137                    ENDIF
     2167                      ENDIF
     2168                   ENDDO
     2169
    21382170                ENDDO
    2139 
    2140              ENDDO
     2171             ENDIF
    21412172!
    21422173!--          Vertical
     
    21752206                   ENDDO
    21762207                ENDDO
    2177 
    2178                 ioff = surf_usm_v(l)%ioff
    2179                 joff = surf_usm_v(l)%joff
    2180 
    2181                 DO  m = 1, surf_usm_v(l)%ns
    2182                    i = surf_usm_v(l)%i(m)
    2183                    j = surf_usm_v(l)%j(m)
    2184 !
    2185 !--                Spectral albedos for wall/green/window surfaces
    2186                    DO  ind_type = 0, 2
    2187                       IF ( surf_usm_v(l)%albedo_type(ind_type,m) == 0 )  THEN
    2188                          IF ( albedo_pars_f%pars_xy(1,j+joff,i+ioff) /=        &
    2189                               albedo_pars_f%fill )                             &
    2190                             surf_usm_v(l)%albedo(ind_type,m) =                 &
    2191                                           albedo_pars_f%pars_xy(1,j+joff,i+ioff)
    2192                          IF ( albedo_pars_f%pars_xy(1,j+joff,i+ioff) /=        &
    2193                               albedo_pars_f%fill )                             &
    2194                             surf_usm_v(l)%aldir(ind_type,m) =                  &
    2195                                           albedo_pars_f%pars_xy(1,j+joff,i+ioff)
    2196                          IF ( albedo_pars_f%pars_xy(2,j+joff,i+ioff) /=        &
    2197                               albedo_pars_f%fill )                             &
    2198                             surf_usm_v(l)%aldif(ind_type,m) =                  &
    2199                                           albedo_pars_f%pars_xy(2,j+joff,i+ioff)
    2200                          IF ( albedo_pars_f%pars_xy(3,j+joff,i+ioff) /=        &
    2201                               albedo_pars_f%fill )                             &
    2202                             surf_usm_v(l)%asdir(ind_type,m) =                  &
    2203                                           albedo_pars_f%pars_xy(3,j+joff,i+ioff)
    2204                          IF ( albedo_pars_f%pars_xy(4,j+joff,i+ioff) /=        &
    2205                               albedo_pars_f%fill )                             &
    2206                             surf_usm_v(l)%asdif(ind_type,m) =                  &
    2207                                           albedo_pars_f%pars_xy(4,j+joff,i+ioff)
    2208                       ENDIF
     2208!
     2209!--             For urban surface only if albedo has not been already initialized
     2210!--             in the urban-surface model via the ASCII file.
     2211                IF ( .NOT. surf_usm_v(l)%albedo_from_ascii )  THEN
     2212                   ioff = surf_usm_v(l)%ioff
     2213                   joff = surf_usm_v(l)%joff
     2214
     2215                   DO  m = 1, surf_usm_v(l)%ns
     2216                      i = surf_usm_v(l)%i(m)
     2217                      j = surf_usm_v(l)%j(m)
     2218!
     2219!--                   Spectral albedos for wall/green/window surfaces
     2220                      DO  ind_type = 0, 2
     2221                         IF ( surf_usm_v(l)%albedo_type(ind_type,m) == 0 )  THEN
     2222                            IF ( albedo_pars_f%pars_xy(1,j+joff,i+ioff) /=        &
     2223                                 albedo_pars_f%fill )                             &
     2224                               surf_usm_v(l)%albedo(ind_type,m) =                 &
     2225                                             albedo_pars_f%pars_xy(1,j+joff,i+ioff)
     2226                            IF ( albedo_pars_f%pars_xy(1,j+joff,i+ioff) /=        &
     2227                                 albedo_pars_f%fill )                             &
     2228                               surf_usm_v(l)%aldir(ind_type,m) =                  &
     2229                                             albedo_pars_f%pars_xy(1,j+joff,i+ioff)
     2230                            IF ( albedo_pars_f%pars_xy(2,j+joff,i+ioff) /=        &
     2231                                 albedo_pars_f%fill )                             &
     2232                               surf_usm_v(l)%aldif(ind_type,m) =                  &
     2233                                             albedo_pars_f%pars_xy(2,j+joff,i+ioff)
     2234                            IF ( albedo_pars_f%pars_xy(3,j+joff,i+ioff) /=        &
     2235                                 albedo_pars_f%fill )                             &
     2236                               surf_usm_v(l)%asdir(ind_type,m) =                  &
     2237                                             albedo_pars_f%pars_xy(3,j+joff,i+ioff)
     2238                            IF ( albedo_pars_f%pars_xy(4,j+joff,i+ioff) /=        &
     2239                                 albedo_pars_f%fill )                             &
     2240                               surf_usm_v(l)%asdif(ind_type,m) =                  &
     2241                                             albedo_pars_f%pars_xy(4,j+joff,i+ioff)
     2242                         ENDIF
     2243                      ENDDO
     2244
    22092245                   ENDDO
    2210 
    2211                 ENDDO
     2246                ENDIF
    22122247             ENDDO
    22132248
  • palm/trunk/SOURCE/surface_mod.f90

    r3298 r3351  
    2626! -----------------
    2727! $Id$
     28! New flag indication that albedo at urban surfaces is initialized via ASCII
     29! file
     30!
     31! 3298 2018-10-02 12:21:11Z kanani
    2832! - Minor formatting/clean-up (kanani)
    2933! - Removed initialization of cssws with surface_csflux values. Only the value 0
     
    260264    TYPE surf_type
    261265
     266       LOGICAL ::  albedo_from_ascii = .FALSE. !< flag indicating that albedo for urban surfaces is input via ASCII format (just for a workaround)
     267   
    262268       INTEGER(iwp) :: ioff                                !< offset value in x-direction, used to determine index of surface element
    263269       INTEGER(iwp) :: joff                                !< offset value in y-direction, used to determine index of surface element
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r3347 r3351  
    2828! -----------------
    2929! $Id$
     30! Set flag indicating that albedo at urban surfaces is already initialized
     31!
     32! 3347 2018-10-15 14:21:08Z suehring
    3033! Enable USM initialization with default building parameters in case no static
    3134! input file exist.
     
    70677070!--     Assign the surface types to the respective data type.
    70687071!--     First, for horizontal upward-facing surfaces.
     7072!--     Further, set flag indicating that albedo is initialized via ASCII
     7073!--     format, else it would be overwritten in the radiation model.
     7074        surf_usm_h%albedo_from_ascii = .TRUE.
    70697075        DO  m = 1, surf_usm_h%ns
    70707076           iw = surf_usm_h%i(m)
     
    71937199!--     2 -- eastward-facing, 3 -- westward-facing )
    71947200        DO  l = 0, 3
     7201!
     7202!--        Set flag indicating that albedo is initialized via ASCII format.
     7203!--        Else it would be overwritten in the radiation model.
     7204           surf_usm_v(l)%albedo_from_ascii = .TRUE.
    71957205           DO  m = 1, surf_usm_v(l)%ns
    71967206              i  = surf_usm_v(l)%i(m)
     
    73907400           ENDDO
    73917401        ENDDO
     7402
    73927403!
    73937404!--     Initialize wall layer thicknesses. Please note, this will be removed
Note: See TracChangeset for help on using the changeset viewer.