Ignore:
Timestamp:
Oct 29, 2018 7:36:56 PM (3 years ago)
Author:
suehring
Message:

Branch resler -r 3439 re-integrated into current trunk: RTM 3.0, transpiration of plant canopy, output fixes in USM

File:
1 edited

Legend:

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

    r3435 r3449  
    2828! -----------------
    2929! $Id$
     30! Bugfix: Fix average arrays allocations in usm_average_3d_data (J.Resler)
     31! Bugfix: Fix reading wall temperatures (J.Resler)
     32! Bugfix: Fix treating of outputs for wall temperature and sky view factors (J.Resler)
     33!
     34!
     35! 3435 2018-10-26 18:25:44Z gronemeier
    3036! Bugfix: allocate gamma_w_green_sat until nzt_wall+1
    3137!
     
    411417   
    412418    USE plant_canopy_model_mod,                                                &
    413         ONLY:  pc_heating_rate, pc_transpiration_rate
     419        ONLY:  pc_heating_rate, pc_transpiration_rate, pc_latent_rate
    414420   
    415421    USE radiation_model_mod,                                                   &
     
    18451851                CASE ( 'usm_rad_net' )
    18461852!--                 array of complete radiation balance
    1847                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%rad_net_av) )  THEN
    1848                         ALLOCATE( surf_usm_h%rad_net_av(1:surf_usm_h%ns) )
    1849                         surf_usm_h%rad_net_av = 0.0_wp
     1853                    IF ( l == -1 ) THEN
     1854                        IF ( .NOT.  ALLOCATED(surf_usm_h%rad_net_av) )  THEN
     1855                            ALLOCATE( surf_usm_h%rad_net_av(1:surf_usm_h%ns) )
     1856                            surf_usm_h%rad_net_av = 0.0_wp
     1857                        ENDIF
    18501858                    ELSE
    18511859                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%rad_net_av) )  THEN
     
    19681976                CASE ( 'usm_rad_hf' )
    19691977!--                 array of heat flux from radiation for surfaces after i-th reflection
    1970                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%surfhf_av) )  THEN
    1971                         ALLOCATE( surf_usm_h%surfhf_av(1:surf_usm_h%ns) )
    1972                         surf_usm_h%surfhf_av = 0.0_wp
     1978                    IF ( l == -1 ) THEN
     1979                        IF ( .NOT.  ALLOCATED(surf_usm_h%surfhf_av) )  THEN
     1980                           ALLOCATE( surf_usm_h%surfhf_av(1:surf_usm_h%ns) )
     1981                           surf_usm_h%surfhf_av = 0.0_wp
     1982                        ENDIF
    19731983                    ELSE
    19741984                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%surfhf_av) )  THEN
     
    19811991!--                 array of sensible heat flux from surfaces
    19821992!--                 land surfaces
    1983                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wshf_eb_av) )  THEN
    1984                         ALLOCATE( surf_usm_h%wshf_eb_av(1:surf_usm_h%ns) )
    1985                         surf_usm_h%wshf_eb_av = 0.0_wp
     1993                    IF ( l == -1 ) THEN
     1994                       IF ( .NOT.  ALLOCATED(surf_usm_h%wshf_eb_av) )  THEN
     1995                          ALLOCATE( surf_usm_h%wshf_eb_av(1:surf_usm_h%ns) )
     1996                          surf_usm_h%wshf_eb_av = 0.0_wp
     1997                       ENDIF
    19861998                    ELSE
    19871999                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wshf_eb_av) )  THEN
     
    20362048                CASE ( 'usm_wghf' )
    20372049!--                 array of heat flux from ground (wall, roof, land)
    2038                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wghf_eb_av) )  THEN
    2039                         ALLOCATE( surf_usm_h%wghf_eb_av(1:surf_usm_h%ns) )
    2040                         surf_usm_h%wghf_eb_av = 0.0_wp
     2050                    IF ( l == -1 ) THEN
     2051                       IF ( .NOT.  ALLOCATED(surf_usm_h%wghf_eb_av) )  THEN
     2052                           ALLOCATE( surf_usm_h%wghf_eb_av(1:surf_usm_h%ns) )
     2053                           surf_usm_h%wghf_eb_av = 0.0_wp
     2054                       ENDIF
    20412055                    ELSE
    20422056                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wghf_eb_av) )  THEN
     
    20482062                CASE ( 'usm_wghf_window' )
    20492063!--                 array of heat flux from window ground (wall, roof, land)
    2050                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wghf_eb_window_av) )  THEN
    2051                         ALLOCATE( surf_usm_h%wghf_eb_window_av(1:surf_usm_h%ns) )
    2052                         surf_usm_h%wghf_eb_window_av = 0.0_wp
     2064                    IF ( l == -1 ) THEN
     2065                       IF ( .NOT.  ALLOCATED(surf_usm_h%wghf_eb_window_av) )  THEN
     2066                           ALLOCATE( surf_usm_h%wghf_eb_window_av(1:surf_usm_h%ns) )
     2067                           surf_usm_h%wghf_eb_window_av = 0.0_wp
     2068                       ENDIF
    20532069                    ELSE
    20542070                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wghf_eb_window_av) )  THEN
     
    20602076                CASE ( 'usm_wghf_green' )
    20612077!--                 array of heat flux from green ground (wall, roof, land)
    2062                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wghf_eb_green_av) )  THEN
    2063                         ALLOCATE( surf_usm_h%wghf_eb_green_av(1:surf_usm_h%ns) )
    2064                         surf_usm_h%wghf_eb_green_av = 0.0_wp
     2078                    IF ( l == -1 ) THEN
     2079                       IF ( .NOT.  ALLOCATED(surf_usm_h%wghf_eb_green_av) )  THEN
     2080                           ALLOCATE( surf_usm_h%wghf_eb_green_av(1:surf_usm_h%ns) )
     2081                           surf_usm_h%wghf_eb_green_av = 0.0_wp
     2082                       ENDIF
    20652083                    ELSE
    20662084                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wghf_eb_green_av) )  THEN
     
    20722090                CASE ( 'usm_iwghf' )
    20732091!--                 array of heat flux from indoor ground (wall, roof, land)
    2074                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_av) )  THEN
    2075                         ALLOCATE( surf_usm_h%iwghf_eb_av(1:surf_usm_h%ns) )
    2076                         surf_usm_h%iwghf_eb_av = 0.0_wp
     2092                    IF ( l == -1 ) THEN
     2093                       IF ( .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_av) )  THEN
     2094                           ALLOCATE( surf_usm_h%iwghf_eb_av(1:surf_usm_h%ns) )
     2095                           surf_usm_h%iwghf_eb_av = 0.0_wp
     2096                       ENDIF
    20772097                    ELSE
    20782098                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%iwghf_eb_av) )  THEN
     
    20842104                CASE ( 'usm_iwghf_window' )
    20852105!--                 array of heat flux from indoor window ground (wall, roof, land)
    2086                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_window_av) )  THEN
    2087                         ALLOCATE( surf_usm_h%iwghf_eb_window_av(1:surf_usm_h%ns) )
    2088                         surf_usm_h%iwghf_eb_window_av = 0.0_wp
     2106                    IF ( l == -1 ) THEN
     2107                       IF ( .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_window_av) )  THEN
     2108                           ALLOCATE( surf_usm_h%iwghf_eb_window_av(1:surf_usm_h%ns) )
     2109                           surf_usm_h%iwghf_eb_window_av = 0.0_wp
     2110                       ENDIF
    20892111                    ELSE
    20902112                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%iwghf_eb_window_av) )  THEN
     
    20932115                       ENDIF
    20942116                    ENDIF
    2095                    
     2117
    20962118                CASE ( 'usm_t_surf_wall' )
    20972119!--                 surface temperature for surfaces
    2098                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_wall_av) )  THEN
    2099                         ALLOCATE( surf_usm_h%t_surf_wall_av(1:surf_usm_h%ns) )
    2100                         surf_usm_h%t_surf_wall_av = 0.0_wp
     2120                    IF ( l == -1 ) THEN
     2121                       IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_wall_av) )  THEN
     2122                           ALLOCATE( surf_usm_h%t_surf_wall_av(1:surf_usm_h%ns) )
     2123                           surf_usm_h%t_surf_wall_av = 0.0_wp
     2124                       ENDIF
    21012125                    ELSE
    21022126                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_wall_av) )  THEN
     
    21082132                CASE ( 'usm_t_surf_window' )
    21092133!--                 surface temperature for window surfaces
    2110                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_window_av) )  THEN
    2111                         ALLOCATE( surf_usm_h%t_surf_window_av(1:surf_usm_h%ns) )
    2112                         surf_usm_h%t_surf_window_av = 0.0_wp
     2134                    IF ( l == -1 ) THEN
     2135                       IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_window_av) )  THEN
     2136                           ALLOCATE( surf_usm_h%t_surf_window_av(1:surf_usm_h%ns) )
     2137                           surf_usm_h%t_surf_window_av = 0.0_wp
     2138                       ENDIF
    21132139                    ELSE
    21142140                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_window_av) )  THEN
     
    21202146                CASE ( 'usm_t_surf_green' )
    21212147!--                 surface temperature for green surfaces
    2122                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_green_av) )  THEN
    2123                         ALLOCATE( surf_usm_h%t_surf_green_av(1:surf_usm_h%ns) )
    2124                         surf_usm_h%t_surf_green_av = 0.0_wp
     2148                    IF ( l == -1 ) THEN
     2149                       IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_green_av) )  THEN
     2150                           ALLOCATE( surf_usm_h%t_surf_green_av(1:surf_usm_h%ns) )
     2151                           surf_usm_h%t_surf_green_av = 0.0_wp
     2152                       ENDIF
    21252153                    ELSE
    21262154                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_green_av) )  THEN
     
    21322160                CASE ( 'usm_t_surf_10cm' )
    21332161!--                 near surface temperature for whole surfaces
    2134                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_10cm_av) )  THEN
    2135                         ALLOCATE( surf_usm_h%t_surf_10cm_av(1:surf_usm_h%ns) )
    2136                         surf_usm_h%t_surf_10cm_av = 0.0_wp
     2162                    IF ( l == -1 ) THEN
     2163                       IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_10cm_av) )  THEN
     2164                           ALLOCATE( surf_usm_h%t_surf_10cm_av(1:surf_usm_h%ns) )
     2165                           surf_usm_h%t_surf_10cm_av = 0.0_wp
     2166                       ENDIF
    21372167                    ELSE
    21382168                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_10cm_av) )  THEN
     
    21442174                CASE ( 'usm_t_wall' )
    21452175!--                 wall temperature for iwl layer of walls and land
    2146                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_wall_av) )  THEN
    2147                         ALLOCATE( surf_usm_h%t_wall_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
    2148                         surf_usm_h%t_wall_av = 0.0_wp
     2176                    IF ( l == -1 ) THEN
     2177                       IF ( .NOT.  ALLOCATED(surf_usm_h%t_wall_av) )  THEN
     2178                           ALLOCATE( surf_usm_h%t_wall_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
     2179                           surf_usm_h%t_wall_av = 0.0_wp
     2180                       ENDIF
    21492181                    ELSE
    21502182                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_wall_av) )  THEN
     
    21562188                CASE ( 'usm_t_window' )
    21572189!--                 window temperature for iwl layer of walls and land
    2158                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_window_av) )  THEN
    2159                         ALLOCATE( surf_usm_h%t_window_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
    2160                         surf_usm_h%t_window_av = 0.0_wp
     2190                    IF ( l == -1 ) THEN
     2191                       IF ( .NOT.  ALLOCATED(surf_usm_h%t_window_av) )  THEN
     2192                           ALLOCATE( surf_usm_h%t_window_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
     2193                           surf_usm_h%t_window_av = 0.0_wp
     2194                       ENDIF
    21612195                    ELSE
    21622196                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_window_av) )  THEN
     
    21682202                CASE ( 'usm_t_green' )
    21692203!--                 green temperature for iwl layer of walls and land
    2170                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_green_av) )  THEN
    2171                         ALLOCATE( surf_usm_h%t_green_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
    2172                         surf_usm_h%t_green_av = 0.0_wp
     2204                    IF ( l == -1 ) THEN
     2205                       IF ( .NOT.  ALLOCATED(surf_usm_h%t_green_av) )  THEN
     2206                           ALLOCATE( surf_usm_h%t_green_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
     2207                           surf_usm_h%t_green_av = 0.0_wp
     2208                       ENDIF
    21732209                    ELSE
    21742210                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_green_av) )  THEN
     
    30913127        CHARACTER(LEN=*),INTENT(OUT)   ::  unit       !<
    30923128
    3093         INTEGER(iwp)                                  :: i,j          !< index
     3129        INTEGER(iwp)                                  :: i,j,l        !< index
     3130        CHARACTER(LEN=2)                              :: ls
    30943131        CHARACTER(LEN=varnamelength)                  :: var          !< TRIM(variable)
    3095         INTEGER(iwp), PARAMETER                       :: nl1 = 32     !< number of directional usm variables
     3132        INTEGER(iwp), PARAMETER                       :: nl1 = 31     !< number of directional usm variables
    30963133        CHARACTER(LEN=varnamelength), DIMENSION(nl1)  :: varlist1 = & !< list of directional usm variables
    30973134                  (/'usm_rad_net                   ', &
     
    31193156                    'usm_surfalb                   ', &
    31203157                    'usm_surfemis                  ', &
    3121                     'usm_t_surf                    ', &
     3158                    'usm_t_surf_wall               ', &
    31223159                    'usm_t_surf_window             ', &
    31233160                    'usm_t_surf_green              ', &
    31243161                    'usm_t_green                   ', &
    31253162                    'usm_t_surf_10cm               ', &
    3126                     'usm_t_wall                    ', &
    3127                     'usm_t_window                  ', &
    3128                     'usm_t_green                   '/)
    3129 
    3130         INTEGER(iwp), PARAMETER                       :: nl2 = 9      !< number of other variables
     3163                    'usm_skyvf                     ', &
     3164                    'usm_skyvft                    '/)
     3165
     3166        INTEGER(iwp), PARAMETER                       :: nl2 = 7      !< number of other variables
    31313167        CHARACTER(LEN=varnamelength), DIMENSION(nl2)  :: varlist2 = & !< list of other usm variables
    3132                   (/'usm_skyvf                     ', &
    3133                     'usm_skyvft                    ', &
    3134                     'usm_svf                       ', &
     3168                  (/'usm_svf                       ', &
    31353169                    'usm_dif                       ', &
    31363170                    'usm_rad_pc_inlw               ', &
     
    31393173                    'usm_rad_pc_inswdif            ', &
    31403174                    'usm_rad_pc_inswref            '/)
     3175
     3176        INTEGER(iwp), PARAMETER                       :: nl3 = 3      !< number of directional layer usm variables
     3177        CHARACTER(LEN=varnamelength), DIMENSION(nl3)  :: varlist3 = & !< list of directional layer usm variables
     3178                  (/'usm_t_wall                    ', &
     3179                    'usm_t_window                  ', &
     3180                    'usm_t_green                   '/)
    31413181
    31423182        INTEGER(iwp), PARAMETER                       :: nd = 5     !< number of directions
     
    31583198                 EXIT
    31593199              ENDIF
     3200              IF ( lfound ) EXIT
     3201           ENDDO
     3202        ENDDO
     3203        IF ( lfound ) GOTO 10
     3204!       directional layer variables
     3205        DO i = 1, nl3
     3206           DO j = 1, nd
     3207              DO l = nzb_wall, nzt_wall
     3208                 WRITE(ls,'(A1,I1)') '_',l
     3209                 IF ( TRIM(var) == TRIM(varlist3(i))//TRIM(ls)//TRIM(dirname(j)) ) THEN
     3210                    lfound = .TRUE.
     3211                    EXIT
     3212                 ENDIF
     3213              ENDDO
    31603214              IF ( lfound ) EXIT
    31613215           ENDDO
     
    45034557             var(1:9) == 'usm_qsws_'  .OR.  var(1:13) == 'usm_qsws_veg_'  .OR.              &
    45044558             var(1:13) == 'usm_qsws_liq_' .OR.                                              &
    4505              var(1:10) == 'usm_t_surf_wall'  .OR.  var(1:10) == 'usm_t_wall'  .OR.          &
     4559             var(1:15) == 'usm_t_surf_wall'  .OR.  var(1:10) == 'usm_t_wall'  .OR.          &
    45064560             var(1:17) == 'usm_t_surf_window'  .OR.  var(1:12) == 'usm_t_window'  .OR.      &
    45074561             var(1:16) == 'usm_t_surf_green'  .OR. var(1:11) == 'usm_t_green' .OR.          &
     
    59105964        ENDIF
    59115965
    5912         IF ( plant_canopy )  THEN
    5913            
    5914             IF ( .NOT.  ALLOCATED( pc_heating_rate) )  THEN
    5915 !--             then pc_heating_rate is allocated in init_plant_canopy
    5916 !--             in case of cthf /= 0 => we need to allocate it for our use here
    5917                 ALLOCATE( pc_heating_rate(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    5918 
    5919                 pc_heating_rate = 0.0_wp
    5920 
    5921             ENDIF
    5922 
    5923             IF ( .NOT.  ALLOCATED( pc_transpiration_rate) )  THEN
    5924 !--             then pc_heating_rate is allocated in init_plant_canopy
    5925 !--             in case of cthf /= 0 => we need to allocate it for our use here
    5926                 ALLOCATE( pc_transpiration_rate(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    5927 
    5928                 pc_transpiration_rate = 0.0_wp
    5929 
    5930 
    5931             ENDIF
    5932         ENDIF
    59335966!
    59345967!--    Check for consistent initialization.
     
    60926125               ENDDO
    60936126            ENDDO
    6094         ELSE
    6095 !--         If specified, replace constant wall temperatures with fully 3D values from file
    6096             IF ( read_wall_temp_3d )  CALL usm_read_wall_temperature()
    6097 !
    60986127        ENDIF
    6099        
    6100 !--   
     6128
     6129!--     If specified, replace constant wall temperatures with fully 3D values from file
     6130        IF ( read_wall_temp_3d )  CALL usm_read_wall_temperature()
     6131
     6132!--
    61016133!--     Possibly DO user-defined actions (e.g. define heterogeneous wall surface)
    61026134        CALL user_init_urban_surface
     
    88708902!> x, y, d, z coordinates
    88718903!------------------------------------------------------------------------------!
    8872     PURE FUNCTION advance_surface(isurfl_start, isurfl_stop, x, y, z, d) &
    8873             result(isurfl)
    8874 
    8875         INTEGER(iwp), INTENT(in)                :: isurfl_start, isurfl_stop
     8904    PURE FUNCTION find_surface( x, y, z, d ) result(isurfl)
     8905
    88768906        INTEGER(iwp), INTENT(in)                :: x, y, z, d
    8877         INTEGER(iwp)                            :: isx, isy, isz, isd
    88788907        INTEGER(iwp)                            :: isurfl
    8879 
    8880         DO isurfl = isurfl_start, isurfl_stop
    8881             isx = surfl(ix, isurfl)
    8882             isy = surfl(iy, isurfl)
    8883             isz = surfl(iz, isurfl)
    8884             isd = surfl(id, isurfl)
    8885             IF ( isx==x .and. isy==y .and. isz==z .and. isd==d )  RETURN
    8886         ENDDO
     8908        INTEGER(iwp)                            :: isx, isy, isz
     8909
     8910        IF ( d == 0 ) THEN
     8911           DO  isurfl = 1, surf_usm_h%ns
     8912              isx = surf_usm_h%i(isurfl)
     8913              isy = surf_usm_h%j(isurfl)
     8914              isz = surf_usm_h%k(isurfl)
     8915              IF ( isx==x .and. isy==y .and. isz==z )  RETURN
     8916           ENDDO
     8917        ELSE
     8918           DO  isurfl = 1, surf_usm_v(d-1)%ns
     8919              isx = surf_usm_v(d-1)%i(isurfl)
     8920              isy = surf_usm_v(d-1)%j(isurfl)
     8921              isz = surf_usm_v(d-1)%k(isurfl)
     8922              IF ( isx==x .and. isy==y .and. isz==z )  RETURN
     8923           ENDDO
     8924        ENDIF
    88878925
    88888926!--     coordinate not found
     
    89278965                        nys <= j .and. j <= nyn)  THEN  !< local processor
    89288966!--                     identify surface id
    8929                         isurfl = advance_surface(isurfl+1, nsurfl, i, j, k, d)
     8967                        isurfl = find_surface( i, j, k, d )
    89308968                        IF ( isurfl == -1 )  THEN
    89318969                            WRITE(message_string, '(a,4i5,a,i5,a)') 'Coordinates (xyzd) ', i, j, k, d, &
     
    89398977                           t_surf_wall_h(isurfl) = rtsurf
    89408978                           t_wall_h(:,isurfl) = rtwall(:)
     8979                           t_window_h(:,isurfl) = rtwall(:)
     8980                           t_green_h(:,isurfl) = rtwall(:)
    89418981                        ELSE
    89428982                           t_surf_wall_v(d-1)%t(isurfl) = rtsurf
    89438983                           t_wall_v(d-1)%t(:,isurfl) = rtwall(:)
     8984                           t_window_v(d-1)%t(:,isurfl) = rtwall(:)
     8985                           t_green_v(d-1)%t(:,isurfl) = rtwall(:)
    89448986                        ENDIF
    89458987                    ENDIF
     
    96639705                                          surf_usm_v(l)%rad_lw_out(m)
    96649706
    9665 if ((abs(t_surf_wall_v(l)%t(m)-276.).gt.100.).or.(abs(t_surf_window_v(l)%t(m)-276.).gt.300.) &
    9666 .or.(abs(t_surf_green_v(l)%t(m)-276.).gt.100)) then
    9667 print*, "tsurfvvvv",m,t_surf_wall_v(l)%t(m),t_surf_window_v(l)%t(m),t_surf_green_v(l)%t(m)
    9668 print*, "params", surf_usm_v(l)%emissivity(ind_veg_wall,m),lambda_surface, t_wall_v(l)%t(nzb_wall:nzt_wall,m), &
    9669                   surf_usm_v(l)%emissivity(ind_wat_win,m),lambda_surface_window,t_window_v(l)%t(nzb_wall:nzt_wall,m),t_green_v(l)%t(nzb_wall:nzt_wall,m)
    9670 print*, "dicken",surf_usm_v(l)%zw(nzb_wall:nzt_wall,m),surf_usm_v(l)%zw_window(nzb_wall:nzt_wall,m),surf_usm_v(l)%zw_green(nzb_wall:nzt_wall,m)
    9671 print*, "c",surf_usm_v(l)%c_surface_window(m),surf_usm_v(l)%c_surface(m)
    9672 !if ((abs(t_surf_v(l)%t(m)-276.).gt.10.).or.(abs(t_surf_window_v(l)%t(m)-276.).gt.10.)) then
    9673 stop
    9674 endif
    96759707!--           numerator of the prognostic equation
    96769708              coef_1 = surf_usm_v(l)%rad_net_l(m) +                            & ! coef +1 corresponds to -lwout included in calculation of radnet_l
Note: See TracChangeset for help on using the changeset viewer.