Ignore:
Timestamp:
Oct 12, 2018 3:17:09 PM (3 years ago)
Author:
kanani
Message:

reintegrate branch resler to trunk

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/urban_surface_mod.f90

    r3274 r3337  
    2828! -----------------
    2929! $Id$
     30! Add output variables usm_rad_pc_inlw, usm_rad_pc_insw*
     31!
     32! 3274 2018-09-24 15:42:55Z knoop
    3033! Modularization of all bulk cloud physics code components
    3134!
     
    349352               spinup_pt_mean, spinup_time, time_do3d, dt_do3d,                &
    350353               average_count_3d, varnamelength, urban_surface,                 &
    351                plant_canopy
     354               plant_canopy, dz
    352355
    353356    USE cpulog,                                                                &
     
    381384               surfinl, surfinlwdif, rad_sw_in_dir, rad_sw_in_diff,            &
    382385               rad_lw_in_diff, surfouts, surfoutl, surfoutsl, surfoutll, surf, &
    383                surfl, nsurfl, nsurfs, surfstart, pcbinsw, pcbinlw,             &
    384                iup_u, inorth_u, isouth_u, ieast_u, iwest_u, iup_l,            &
     386               surfl, nsurfl, pcbinsw, pcbinlw, pcbinswdir,                    &
     387               pcbinswdif, iup_u, inorth_u, isouth_u, ieast_u, iwest_u, iup_l, &
    385388               inorth_l, isouth_l, ieast_l, iwest_l, id,                       &
    386                iz, iy, ix, idir, jdir, kdir,  nsurf_type, nsurf, idsvf, ndsvf, &
    387                iup_a, idown_a, inorth_a, isouth_a, ieast_a, iwest_a,           &
     389               iz, iy, ix,  nsurf, idsvf, ndsvf,                               &
    388390               idcsf, ndcsf, kdcsf, pct,                                       &
    389                startland, endland, startwall, endwall, skyvf, skyvft
     391               startland, endland, startwall, endwall, skyvf, skyvft, nzub,    &
     392               nzut, nzpt, npcbl, pcbl
    390393
    391394    USE statistics,                                                            &
     
    414417    INTEGER(iwp) ::  pedestrian_category = 2         !< default category for wall surface in pedestrian zone
    415418    INTEGER(iwp) ::  roof_category = 2               !< default category for root surface
     419    REAL(wp)     ::  roughness_concrete = 0.001_wp   !< roughness length of average concrete surface
    416420!
    417421!-- Indices of input attributes for (above) ground floor level
     
    605609    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfins_av       !< average of array of residua of sw radiation absorbed in surface after last reflection
    606610    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfinl_av       !< average of array of residua of lw radiation absorbed in surface after last reflection
     611    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinlw_av       !< Average of pcbinlw
     612    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinsw_av       !< Average of pcbinsw
     613    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswdir_av    !< Average of pcbinswdir
     614    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswdif_av    !< Average of pcbinswdif
     615    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswref_av    !< Average of pcbinswref
    607616   
    608617
     
    12601269!--     find the real name of the variable
    12611270        ids = -1
     1271        l = -1
    12621272        var = TRIM(variable)
    12631273        DO i = 0, nd-1
    12641274            k = len(TRIM(var))
    12651275            j = len(TRIM(dirname(i)))
    1266             IF ( var(k-j+1:k) == dirname(i) )  THEN
     1276            IF ( TRIM(var(k-j+1:k)) == TRIM(dirname(i)) )  THEN
    12671277                ids = i
    12681278                idsint = dirint(ids)
     
    12711281            ENDIF
    12721282        ENDDO
     1283        l = idsint - 2  ! horisontal direction index - terible hack !
     1284        IF ( l < 0 .OR. l > 3 ) THEN
     1285           l = -1
     1286        END IF
    12731287        IF ( ids == -1 )  THEN
    12741288            var = TRIM(variable)
     
    13111325                CASE ( 'usm_rad_net' )
    13121326!--                 array of complete radiation balance
    1313                     IF ( .NOT.  ALLOCATED(surf_usm_h%rad_net_av) )  THEN
     1327                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%rad_net_av) )  THEN
    13141328                        ALLOCATE( surf_usm_h%rad_net_av(1:surf_usm_h%ns) )
    13151329                        surf_usm_h%rad_net_av = 0.0_wp
     1330                    ELSE
     1331                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%rad_net_av) )  THEN
     1332                            ALLOCATE( surf_usm_v(l)%rad_net_av(1:surf_usm_v(l)%ns) )
     1333                            surf_usm_v(l)%rad_net_av = 0.0_wp
     1334                        ENDIF
    13161335                    ENDIF
    1317                     DO  l = 0, 3
    1318                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%rad_net_av) )  THEN
    1319                            ALLOCATE( surf_usm_v(l)%rad_net_av(1:surf_usm_v(l)%ns) )
    1320                            surf_usm_v(l)%rad_net_av = 0.0_wp
    1321                        ENDIF
    1322                     ENDDO
    13231336                   
    13241337                CASE ( 'usm_rad_insw' )
     
    13981411                    ENDIF
    13991412                                   
     1413                CASE ( 'usm_rad_pc_inlw' )
     1414!--                 array of of lw radiation absorbed in plant canopy
     1415                    IF ( .NOT.  ALLOCATED(pcbinlw_av) )  THEN
     1416                        ALLOCATE( pcbinlw_av(1:npcbl) )
     1417                        pcbinlw_av = 0.0_wp
     1418                    ENDIF
     1419                                   
     1420                CASE ( 'usm_rad_pc_insw' )
     1421!--                 array of of sw radiation absorbed in plant canopy
     1422                    IF ( .NOT.  ALLOCATED(pcbinsw_av) )  THEN
     1423                        ALLOCATE( pcbinsw_av(1:npcbl) )
     1424                        pcbinsw_av = 0.0_wp
     1425                    ENDIF
     1426                                   
     1427                CASE ( 'usm_rad_pc_inswdir' )
     1428!--                 array of of direct sw radiation absorbed in plant canopy
     1429                    IF ( .NOT.  ALLOCATED(pcbinswdir_av) )  THEN
     1430                        ALLOCATE( pcbinswdir_av(1:npcbl) )
     1431                        pcbinswdir_av = 0.0_wp
     1432                    ENDIF
     1433                                   
     1434                CASE ( 'usm_rad_pc_inswdif' )
     1435!--                 array of of diffuse sw radiation absorbed in plant canopy
     1436                    IF ( .NOT.  ALLOCATED(pcbinswdif_av) )  THEN
     1437                        ALLOCATE( pcbinswdif_av(1:npcbl) )
     1438                        pcbinswdif_av = 0.0_wp
     1439                    ENDIF
     1440                                   
     1441                CASE ( 'usm_rad_pc_inswref' )
     1442!--                 array of of reflected sw radiation absorbed in plant canopy
     1443                    IF ( .NOT.  ALLOCATED(pcbinswref_av) )  THEN
     1444                        ALLOCATE( pcbinswref_av(1:npcbl) )
     1445                        pcbinswref_av = 0.0_wp
     1446                    ENDIF
     1447                                   
    14001448                CASE ( 'usm_rad_hf' )
    14011449!--                 array of heat flux from radiation for surfaces after i-th reflection
    1402                     IF ( .NOT.  ALLOCATED(surf_usm_h%surfhf_av) )  THEN
     1450                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%surfhf_av) )  THEN
    14031451                        ALLOCATE( surf_usm_h%surfhf_av(1:surf_usm_h%ns) )
    14041452                        surf_usm_h%surfhf_av = 0.0_wp
    1405                     ENDIF
    1406                     DO  l = 0, 3
     1453                    ELSE
    14071454                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%surfhf_av) )  THEN
    14081455                           ALLOCATE( surf_usm_v(l)%surfhf_av(1:surf_usm_v(l)%ns) )
    14091456                           surf_usm_v(l)%surfhf_av = 0.0_wp
    14101457                       ENDIF
    1411                     ENDDO
     1458                    ENDIF
    14121459
    14131460                CASE ( 'usm_wshf' )
    14141461!--                 array of sensible heat flux from surfaces
    14151462!--                 land surfaces
    1416                     IF ( .NOT.  ALLOCATED(surf_usm_h%wshf_eb_av) )  THEN
     1463                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wshf_eb_av) )  THEN
    14171464                        ALLOCATE( surf_usm_h%wshf_eb_av(1:surf_usm_h%ns) )
    14181465                        surf_usm_h%wshf_eb_av = 0.0_wp
    1419                     ENDIF
    1420                     DO  l = 0, 3
     1466                    ELSE
    14211467                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wshf_eb_av) )  THEN
    14221468                           ALLOCATE( surf_usm_v(l)%wshf_eb_av(1:surf_usm_v(l)%ns) )
    14231469                           surf_usm_v(l)%wshf_eb_av = 0.0_wp
    14241470                       ENDIF
    1425                     ENDDO
     1471                    ENDIF
    14261472!
    14271473!--             Please note, the following output quantities belongs to the
     
    14311477                CASE ( 'usm_wghf' )
    14321478!--                 array of heat flux from ground (wall, roof, land)
    1433                     IF ( .NOT.  ALLOCATED(surf_usm_h%wghf_eb_av) )  THEN
     1479                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wghf_eb_av) )  THEN
    14341480                        ALLOCATE( surf_usm_h%wghf_eb_av(1:surf_usm_h%ns) )
    14351481                        surf_usm_h%wghf_eb_av = 0.0_wp
    1436                     ENDIF
    1437                     DO  l = 0, 3
     1482                    ELSE
    14381483                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wghf_eb_av) )  THEN
    14391484                           ALLOCATE( surf_usm_v(l)%wghf_eb_av(1:surf_usm_v(l)%ns) )
    14401485                           surf_usm_v(l)%wghf_eb_av = 0.0_wp
    14411486                       ENDIF
    1442                     ENDDO
     1487                    ENDIF
    14431488
    14441489                CASE ( 'usm_wghf_window' )
    14451490!--                 array of heat flux from window ground (wall, roof, land)
    1446                     IF ( .NOT.  ALLOCATED(surf_usm_h%wghf_eb_window_av) )  THEN
     1491                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wghf_eb_window_av) )  THEN
    14471492                        ALLOCATE( surf_usm_h%wghf_eb_window_av(1:surf_usm_h%ns) )
    14481493                        surf_usm_h%wghf_eb_window_av = 0.0_wp
    1449                     ENDIF
    1450                     DO  l = 0, 3
     1494                    ELSE
    14511495                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wghf_eb_window_av) )  THEN
    14521496                           ALLOCATE( surf_usm_v(l)%wghf_eb_window_av(1:surf_usm_v(l)%ns) )
    14531497                           surf_usm_v(l)%wghf_eb_window_av = 0.0_wp
    14541498                       ENDIF
    1455                     ENDDO
     1499                    ENDIF
    14561500
    14571501                CASE ( 'usm_wghf_green' )
    14581502!--                 array of heat flux from green ground (wall, roof, land)
    1459                     IF ( .NOT.  ALLOCATED(surf_usm_h%wghf_eb_green_av) )  THEN
     1503                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%wghf_eb_green_av) )  THEN
    14601504                        ALLOCATE( surf_usm_h%wghf_eb_green_av(1:surf_usm_h%ns) )
    14611505                        surf_usm_h%wghf_eb_green_av = 0.0_wp
    1462                     ENDIF
    1463                     DO  l = 0, 3
     1506                    ELSE
    14641507                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%wghf_eb_green_av) )  THEN
    14651508                           ALLOCATE( surf_usm_v(l)%wghf_eb_green_av(1:surf_usm_v(l)%ns) )
    14661509                           surf_usm_v(l)%wghf_eb_green_av = 0.0_wp
    14671510                       ENDIF
    1468                     ENDDO
     1511                    ENDIF
    14691512
    14701513                CASE ( 'usm_iwghf' )
    14711514!--                 array of heat flux from indoor ground (wall, roof, land)
    1472                     IF ( .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_av) )  THEN
     1515                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_av) )  THEN
    14731516                        ALLOCATE( surf_usm_h%iwghf_eb_av(1:surf_usm_h%ns) )
    14741517                        surf_usm_h%iwghf_eb_av = 0.0_wp
    1475                     ENDIF
    1476                     DO  l = 0, 3
     1518                    ELSE
    14771519                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%iwghf_eb_av) )  THEN
    14781520                           ALLOCATE( surf_usm_v(l)%iwghf_eb_av(1:surf_usm_v(l)%ns) )
    14791521                           surf_usm_v(l)%iwghf_eb_av = 0.0_wp
    14801522                       ENDIF
    1481                     ENDDO
     1523                    ENDIF
    14821524
    14831525                CASE ( 'usm_iwghf_window' )
    14841526!--                 array of heat flux from indoor window ground (wall, roof, land)
    1485                     IF ( .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_window_av) )  THEN
     1527                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%iwghf_eb_window_av) )  THEN
    14861528                        ALLOCATE( surf_usm_h%iwghf_eb_window_av(1:surf_usm_h%ns) )
    14871529                        surf_usm_h%iwghf_eb_window_av = 0.0_wp
    1488                     ENDIF
    1489                     DO  l = 0, 3
     1530                    ELSE
    14901531                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%iwghf_eb_window_av) )  THEN
    14911532                           ALLOCATE( surf_usm_v(l)%iwghf_eb_window_av(1:surf_usm_v(l)%ns) )
    14921533                           surf_usm_v(l)%iwghf_eb_window_av = 0.0_wp
    14931534                       ENDIF
    1494                     ENDDO
     1535                    ENDIF
    14951536                   
    14961537                CASE ( 'usm_t_surf' )
    14971538!--                 surface temperature for surfaces
    1498                     IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_av) )  THEN
     1539                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_av) )  THEN
    14991540                        ALLOCATE( surf_usm_h%t_surf_av(1:surf_usm_h%ns) )
    15001541                        surf_usm_h%t_surf_av = 0.0_wp
    1501                     ENDIF
    1502                     DO  l = 0, 3
     1542                    ELSE
    15031543                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_av) )  THEN
    15041544                           ALLOCATE( surf_usm_v(l)%t_surf_av(1:surf_usm_v(l)%ns) )
    15051545                           surf_usm_v(l)%t_surf_av = 0.0_wp
    15061546                       ENDIF
    1507                     ENDDO
     1547                    ENDIF
    15081548
    15091549                CASE ( 'usm_t_surf_window' )
    15101550!--                 surface temperature for window surfaces
    1511                     IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_window_av) )  THEN
     1551                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_window_av) )  THEN
    15121552                        ALLOCATE( surf_usm_h%t_surf_window_av(1:surf_usm_h%ns) )
    15131553                        surf_usm_h%t_surf_window_av = 0.0_wp
    1514                     ENDIF
    1515                     DO  l = 0, 3
     1554                    ELSE
    15161555                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_window_av) )  THEN
    15171556                           ALLOCATE( surf_usm_v(l)%t_surf_window_av(1:surf_usm_v(l)%ns) )
    15181557                           surf_usm_v(l)%t_surf_window_av = 0.0_wp
    15191558                       ENDIF
    1520                     ENDDO
     1559                    ENDIF
    15211560                   
    15221561                CASE ( 'usm_t_surf_green' )
    15231562!--                 surface temperature for green surfaces
    1524                     IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_green_av) )  THEN
     1563                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_green_av) )  THEN
    15251564                        ALLOCATE( surf_usm_h%t_surf_green_av(1:surf_usm_h%ns) )
    15261565                        surf_usm_h%t_surf_green_av = 0.0_wp
    1527                     ENDIF
    1528                     DO  l = 0, 3
     1566                    ELSE
    15291567                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_green_av) )  THEN
    15301568                           ALLOCATE( surf_usm_v(l)%t_surf_green_av(1:surf_usm_v(l)%ns) )
    15311569                           surf_usm_v(l)%t_surf_green_av = 0.0_wp
    15321570                       ENDIF
    1533                     ENDDO
     1571                    ENDIF
    15341572               
    15351573                CASE ( 'usm_t_surf_10cm' )
    15361574!--                 near surface temperature for whole surfaces
    1537                     IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_10cm_av) )  THEN
     1575                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_10cm_av) )  THEN
    15381576                        ALLOCATE( surf_usm_h%t_surf_10cm_av(1:surf_usm_h%ns) )
    15391577                        surf_usm_h%t_surf_10cm_av = 0.0_wp
    1540                     ENDIF
    1541                     DO  l = 0, 3
     1578                    ELSE
    15421579                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_10cm_av) )  THEN
    15431580                           ALLOCATE( surf_usm_v(l)%t_surf_10cm_av(1:surf_usm_v(l)%ns) )
    15441581                           surf_usm_v(l)%t_surf_10cm_av = 0.0_wp
    15451582                       ENDIF
    1546                     ENDDO
     1583                    ENDIF
    15471584
    15481585                CASE ( 'usm_t_wall' )
    15491586!--                 wall temperature for iwl layer of walls and land
    1550                     IF ( .NOT.  ALLOCATED(surf_usm_h%t_wall_av) )  THEN
     1587                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_wall_av) )  THEN
    15511588                        ALLOCATE( surf_usm_h%t_wall_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
    15521589                        surf_usm_h%t_wall_av = 0.0_wp
    1553                     ENDIF
    1554                     DO  l = 0, 3
     1590                    ELSE
    15551591                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_wall_av) )  THEN
    15561592                           ALLOCATE( surf_usm_v(l)%t_wall_av(nzb_wall:nzt_wall,1:surf_usm_v(l)%ns) )
    15571593                           surf_usm_v(l)%t_wall_av = 0.0_wp
    15581594                       ENDIF
    1559                     ENDDO
     1595                    ENDIF
    15601596
    15611597                CASE ( 'usm_t_window' )
    15621598!--                 window temperature for iwl layer of walls and land
    1563                     IF ( .NOT.  ALLOCATED(surf_usm_h%t_window_av) )  THEN
     1599                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_window_av) )  THEN
    15641600                        ALLOCATE( surf_usm_h%t_window_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
    15651601                        surf_usm_h%t_window_av = 0.0_wp
    1566                     ENDIF
    1567                     DO  l = 0, 3
     1602                    ELSE
    15681603                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_window_av) )  THEN
    15691604                           ALLOCATE( surf_usm_v(l)%t_window_av(nzb_wall:nzt_wall,1:surf_usm_v(l)%ns) )
    15701605                           surf_usm_v(l)%t_window_av = 0.0_wp
    15711606                       ENDIF
    1572                     ENDDO
     1607                    ENDIF
    15731608
    15741609                CASE ( 'usm_t_green' )
    15751610!--                 green temperature for iwl layer of walls and land
    1576                     IF ( .NOT.  ALLOCATED(surf_usm_h%t_green_av) )  THEN
     1611                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_green_av) )  THEN
    15771612                        ALLOCATE( surf_usm_h%t_green_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
    15781613                        surf_usm_h%t_green_av = 0.0_wp
    1579                     ENDIF
    1580                     DO  l = 0, 3
     1614                    ELSE
    15811615                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_green_av) )  THEN
    15821616                           ALLOCATE( surf_usm_v(l)%t_green_av(nzb_wall:nzt_wall,1:surf_usm_v(l)%ns) )
    15831617                           surf_usm_v(l)%t_green_av = 0.0_wp
    15841618                       ENDIF
    1585                     ENDDO
     1619                    ENDIF
    15861620
    15871621               CASE DEFAULT
     
    15961630                CASE ( 'usm_rad_net' )
    15971631!--                 array of complete radiation balance
    1598                     DO  m = 1, surf_usm_h%ns
    1599                        surf_usm_h%rad_net_av(m) =                              &
    1600                                           surf_usm_h%rad_net_av(m) +           &
    1601                                           surf_usm_h%rad_net_l(m)
    1602                     ENDDO
    1603                     DO  l = 0, 3
     1632                    IF ( l == -1 ) THEN
     1633                       DO  m = 1, surf_usm_h%ns
     1634                          surf_usm_h%rad_net_av(m) =                              &
     1635                                             surf_usm_h%rad_net_av(m) +           &
     1636                                             surf_usm_h%rad_net_l(m)
     1637                       ENDDO
     1638                    ELSE
    16041639                       DO  m = 1, surf_usm_v(l)%ns
    16051640                          surf_usm_v(l)%rad_net_av(m) =                        &
     
    16071642                                          surf_usm_v(l)%rad_net_l(m)
    16081643                       ENDDO
    1609                     ENDDO
    1610                    
     1644                    ENDIF
     1645
    16111646                CASE ( 'usm_rad_insw' )
    16121647!--                 array of sw radiation falling to surface after i-th reflection
     
    17001735                    ENDDO
    17011736                   
     1737                CASE ( 'usm_rad_pc_inlw' )
     1738                    pcbinlw_av(:) = pcbinlw_av(:) + pcbinlw(:)
     1739                   
     1740                CASE ( 'usm_rad_pc_insw' )
     1741                    pcbinsw_av(:) = pcbinsw_av(:) + pcbinsw(:)
     1742                   
     1743                CASE ( 'usm_rad_pc_inswdir' )
     1744                    pcbinswdir_av(:) = pcbinswdir_av(:) + pcbinswdir(:)
     1745                   
     1746                CASE ( 'usm_rad_pc_inswdif' )
     1747                    pcbinswdif_av(:) = pcbinswdif_av(:) + pcbinswdif(:)
     1748                   
     1749                CASE ( 'usm_rad_pc_inswref' )
     1750                    pcbinswref_av(:) = pcbinswref_av(:) + pcbinsw(:)     &
     1751                                                        - pcbinswdir(:)  &
     1752                                                        - pcbinswdif(:)
     1753                   
    17021754                CASE ( 'usm_rad_hf' )
    17031755!--                 array of heat flux from radiation for surfaces after i-th reflection
    1704                     DO  m = 1, surf_usm_h%ns
    1705                        surf_usm_h%surfhf_av(m) =                               &
    1706                                           surf_usm_h%surfhf_av(m) +            &
    1707                                           surf_usm_h%surfhf(m)
    1708                     ENDDO
    1709                     DO  l = 0, 3
     1756                    IF ( l == -1 ) THEN
     1757                       DO  m = 1, surf_usm_h%ns
     1758                          surf_usm_h%surfhf_av(m) =                               &
     1759                                             surf_usm_h%surfhf_av(m) +            &
     1760                                             surf_usm_h%surfhf(m)
     1761                       ENDDO
     1762                    ELSE
    17101763                       DO  m = 1, surf_usm_v(l)%ns
    17111764                          surf_usm_v(l)%surfhf_av(m) =                         &
     
    17131766                                          surf_usm_v(l)%surfhf(m)
    17141767                       ENDDO
    1715                     ENDDO
     1768                    ENDIF
    17161769                   
    17171770                CASE ( 'usm_wshf' )
    17181771!--                 array of sensible heat flux from surfaces (land, roof, wall)
    1719                     DO  m = 1, surf_usm_h%ns
    1720                        surf_usm_h%wshf_eb_av(m) =                              &
    1721                                           surf_usm_h%wshf_eb_av(m) +           &
    1722                                           surf_usm_h%wshf_eb(m)
    1723                     ENDDO
    1724                     DO  l = 0, 3
     1772                    IF ( l == -1 ) THEN
     1773                       DO  m = 1, surf_usm_h%ns
     1774                          surf_usm_h%wshf_eb_av(m) =                              &
     1775                                             surf_usm_h%wshf_eb_av(m) +           &
     1776                                             surf_usm_h%wshf_eb(m)
     1777                       ENDDO
     1778                    ELSE
    17251779                       DO  m = 1, surf_usm_v(l)%ns
    17261780                          surf_usm_v(l)%wshf_eb_av(m) =                        &
     
    17281782                                          surf_usm_v(l)%wshf_eb(m)
    17291783                       ENDDO
    1730                     ENDDO
     1784                    ENDIF
    17311785                   
    17321786                CASE ( 'usm_wghf' )
    17331787!--                 array of heat flux from ground (wall, roof, land)
    1734                     DO  m = 1, surf_usm_h%ns
    1735                        surf_usm_h%wghf_eb_av(m) =                              &
    1736                                           surf_usm_h%wghf_eb_av(m) +           &
    1737                                           surf_usm_h%wghf_eb(m)
    1738                     ENDDO
    1739                     DO  l = 0, 3
     1788                    IF ( l == -1 ) THEN
     1789                       DO  m = 1, surf_usm_h%ns
     1790                          surf_usm_h%wghf_eb_av(m) =                              &
     1791                                             surf_usm_h%wghf_eb_av(m) +           &
     1792                                             surf_usm_h%wghf_eb(m)
     1793                       ENDDO
     1794                    ELSE
    17401795                       DO  m = 1, surf_usm_v(l)%ns
    17411796                          surf_usm_v(l)%wghf_eb_av(m) =                        &
     
    17431798                                          surf_usm_v(l)%wghf_eb(m)
    17441799                       ENDDO
    1745                     ENDDO
     1800                    ENDIF
    17461801                   
    17471802                CASE ( 'usm_wghf_window' )
    17481803!--                 array of heat flux from window ground (wall, roof, land)
    1749                     DO  m = 1, surf_usm_h%ns
    1750                        surf_usm_h%wghf_eb_window_av(m) =                              &
    1751                                           surf_usm_h%wghf_eb_window_av(m) +           &
    1752                                           surf_usm_h%wghf_eb_window(m)
    1753                     ENDDO
    1754                     DO  l = 0, 3
     1804                    IF ( l == -1 ) THEN
     1805                       DO  m = 1, surf_usm_h%ns
     1806                          surf_usm_h%wghf_eb_window_av(m) =                              &
     1807                                             surf_usm_h%wghf_eb_window_av(m) +           &
     1808                                             surf_usm_h%wghf_eb_window(m)
     1809                       ENDDO
     1810                    ELSE
    17551811                       DO  m = 1, surf_usm_v(l)%ns
    17561812                          surf_usm_v(l)%wghf_eb_window_av(m) =                        &
     
    17581814                                          surf_usm_v(l)%wghf_eb_window(m)
    17591815                       ENDDO
    1760                     ENDDO
     1816                    ENDIF
    17611817
    17621818                CASE ( 'usm_wghf_green' )
    17631819!--                 array of heat flux from green ground (wall, roof, land)
    1764                     DO  m = 1, surf_usm_h%ns
    1765                        surf_usm_h%wghf_eb_green_av(m) =                              &
    1766                                           surf_usm_h%wghf_eb_green_av(m) +           &
    1767                                           surf_usm_h%wghf_eb_green(m)
    1768                     ENDDO
    1769                     DO  l = 0, 3
     1820                    IF ( l == -1 ) THEN
     1821                       DO  m = 1, surf_usm_h%ns
     1822                          surf_usm_h%wghf_eb_green_av(m) =                              &
     1823                                             surf_usm_h%wghf_eb_green_av(m) +           &
     1824                                             surf_usm_h%wghf_eb_green(m)
     1825                       ENDDO
     1826                    ELSE
    17701827                       DO  m = 1, surf_usm_v(l)%ns
    17711828                          surf_usm_v(l)%wghf_eb_green_av(m) =                        &
     
    17731830                                          surf_usm_v(l)%wghf_eb_green(m)
    17741831                       ENDDO
    1775                     ENDDO
     1832                    ENDIF
    17761833                   
    17771834                CASE ( 'usm_iwghf' )
    17781835!--                 array of heat flux from indoor ground (wall, roof, land)
    1779                     DO  m = 1, surf_usm_h%ns
    1780                        surf_usm_h%iwghf_eb_av(m) =                              &
    1781                                           surf_usm_h%iwghf_eb_av(m) +           &
    1782                                           surf_usm_h%iwghf_eb(m)
    1783                     ENDDO
    1784                     DO  l = 0, 3
     1836                    IF ( l == -1 ) THEN
     1837                       DO  m = 1, surf_usm_h%ns
     1838                          surf_usm_h%iwghf_eb_av(m) =                              &
     1839                                             surf_usm_h%iwghf_eb_av(m) +           &
     1840                                             surf_usm_h%iwghf_eb(m)
     1841                       ENDDO
     1842                    ELSE
    17851843                       DO  m = 1, surf_usm_v(l)%ns
    17861844                          surf_usm_v(l)%iwghf_eb_av(m) =                        &
     
    17881846                                          surf_usm_v(l)%iwghf_eb(m)
    17891847                       ENDDO
    1790                     ENDDO
     1848                    ENDIF
    17911849                   
    17921850                CASE ( 'usm_iwghf_window' )
    17931851!--                 array of heat flux from indoor window ground (wall, roof, land)
    1794                     DO  m = 1, surf_usm_h%ns
    1795                        surf_usm_h%iwghf_eb_window_av(m) =                              &
    1796                                           surf_usm_h%iwghf_eb_window_av(m) +           &
    1797                                           surf_usm_h%iwghf_eb_window(m)
    1798                     ENDDO
    1799                     DO  l = 0, 3
     1852                    IF ( l == -1 ) THEN
     1853                       DO  m = 1, surf_usm_h%ns
     1854                          surf_usm_h%iwghf_eb_window_av(m) =                              &
     1855                                             surf_usm_h%iwghf_eb_window_av(m) +           &
     1856                                             surf_usm_h%iwghf_eb_window(m)
     1857                       ENDDO
     1858                    ELSE
    18001859                       DO  m = 1, surf_usm_v(l)%ns
    18011860                          surf_usm_v(l)%iwghf_eb_window_av(m) =                        &
     
    18031862                                          surf_usm_v(l)%iwghf_eb_window(m)
    18041863                       ENDDO
    1805                     ENDDO
     1864                    ENDIF
    18061865                   
    18071866                CASE ( 'usm_t_surf' )
    18081867!--                 surface temperature for surfaces
    1809                     DO  m = 1, surf_usm_h%ns
    1810                        surf_usm_h%t_surf_av(m) =                               &
    1811                                           surf_usm_h%t_surf_av(m) +            &
    1812                                           t_surf_h(m)
    1813                     ENDDO
    1814                     DO  l = 0, 3
     1868                    IF ( l == -1 ) THEN
     1869                       DO  m = 1, surf_usm_h%ns
     1870                          surf_usm_h%t_surf_av(m) =                               &
     1871                                             surf_usm_h%t_surf_av(m) +            &
     1872                                             t_surf_h(m)
     1873                       ENDDO
     1874                    ELSE
    18151875                       DO  m = 1, surf_usm_v(l)%ns
    18161876                          surf_usm_v(l)%t_surf_av(m) =                         &
     
    18181878                                          t_surf_v(l)%t(m)
    18191879                       ENDDO
    1820                     ENDDO
     1880                    ENDIF
    18211881                   
    18221882                CASE ( 'usm_t_surf_window' )
    18231883!--                 surface temperature for window surfaces
    1824                     DO  m = 1, surf_usm_h%ns
    1825                        surf_usm_h%t_surf_window_av(m) =                               &
    1826                                           surf_usm_h%t_surf_window_av(m) +            &
    1827                                           t_surf_window_h(m)
    1828                     ENDDO
    1829                     DO  l = 0, 3
     1884                    IF ( l == -1 ) THEN
     1885                       DO  m = 1, surf_usm_h%ns
     1886                          surf_usm_h%t_surf_window_av(m) =                               &
     1887                                             surf_usm_h%t_surf_window_av(m) +            &
     1888                                             t_surf_window_h(m)
     1889                       ENDDO
     1890                    ELSE
    18301891                       DO  m = 1, surf_usm_v(l)%ns
    18311892                          surf_usm_v(l)%t_surf_window_av(m) =                         &
     
    18331894                                          t_surf_window_v(l)%t(m)
    18341895                       ENDDO
    1835                     ENDDO
     1896                    ENDIF
    18361897                   
    18371898                CASE ( 'usm_t_surf_green' )
    18381899!--                 surface temperature for green surfaces
    1839                     DO  m = 1, surf_usm_h%ns
    1840                        surf_usm_h%t_surf_green_av(m) =                               &
    1841                                           surf_usm_h%t_surf_green_av(m) +            &
    1842                                           t_surf_green_h(m)
    1843                     ENDDO
    1844                     DO  l = 0, 3
     1900                    IF ( l == -1 ) THEN
     1901                       DO  m = 1, surf_usm_h%ns
     1902                          surf_usm_h%t_surf_green_av(m) =                               &
     1903                                             surf_usm_h%t_surf_green_av(m) +            &
     1904                                             t_surf_green_h(m)
     1905                       ENDDO
     1906                    ELSE
    18451907                       DO  m = 1, surf_usm_v(l)%ns
    18461908                          surf_usm_v(l)%t_surf_green_av(m) =                         &
     
    18481910                                          t_surf_green_v(l)%t(m)
    18491911                       ENDDO
    1850                     ENDDO
     1912                    ENDIF
    18511913               
    18521914                CASE ( 'usm_t_surf_10cm' )
    18531915!--                 near surface temperature for whole surfaces
    1854                     DO  m = 1, surf_usm_h%ns
    1855                        surf_usm_h%t_surf_10cm_av(m) =                               &
    1856                                           surf_usm_h%t_surf_10cm_av(m) +            &
    1857                                           t_surf_10cm_h(m)
    1858                     ENDDO
    1859                     DO  l = 0, 3
     1916                    IF ( l == -1 ) THEN
     1917                       DO  m = 1, surf_usm_h%ns
     1918                          surf_usm_h%t_surf_10cm_av(m) =                               &
     1919                                             surf_usm_h%t_surf_10cm_av(m) +            &
     1920                                             t_surf_10cm_h(m)
     1921                       ENDDO
     1922                    ELSE
    18601923                       DO  m = 1, surf_usm_v(l)%ns
    18611924                          surf_usm_v(l)%t_surf_10cm_av(m) =                         &
     
    18631926                                          t_surf_10cm_v(l)%t(m)
    18641927                       ENDDO
    1865                     ENDDO
     1928                    ENDIF
    18661929
    18671930                   
    18681931                CASE ( 'usm_t_wall' )
    18691932!--                 wall temperature for  iwl layer of walls and land
    1870                     DO  m = 1, surf_usm_h%ns
    1871                        surf_usm_h%t_wall_av(iwl,m) =                           &
    1872                                           surf_usm_h%t_wall_av(iwl,m) +        &
    1873                                           t_wall_h(iwl,m)
    1874                     ENDDO
    1875                     DO  l = 0, 3
     1933                    IF ( l == -1 ) THEN
     1934                       DO  m = 1, surf_usm_h%ns
     1935                          surf_usm_h%t_wall_av(iwl,m) =                           &
     1936                                             surf_usm_h%t_wall_av(iwl,m) +        &
     1937                                             t_wall_h(iwl,m)
     1938                       ENDDO
     1939                    ELSE
    18761940                       DO  m = 1, surf_usm_v(l)%ns
    18771941                          surf_usm_v(l)%t_wall_av(iwl,m) =                     &
     
    18791943                                          t_wall_v(l)%t(iwl,m)
    18801944                       ENDDO
    1881                     ENDDO
     1945                    ENDIF
    18821946                   
    18831947                CASE ( 'usm_t_window' )
    18841948!--                 window temperature for  iwl layer of walls and land
    1885                     DO  m = 1, surf_usm_h%ns
    1886                        surf_usm_h%t_window_av(iwl,m) =                           &
    1887                                           surf_usm_h%t_window_av(iwl,m) +        &
    1888                                           t_window_h(iwl,m)
    1889                     ENDDO
    1890                     DO  l = 0, 3
     1949                    IF ( l == -1 ) THEN
     1950                       DO  m = 1, surf_usm_h%ns
     1951                          surf_usm_h%t_window_av(iwl,m) =                           &
     1952                                             surf_usm_h%t_window_av(iwl,m) +        &
     1953                                             t_window_h(iwl,m)
     1954                       ENDDO
     1955                    ELSE
    18911956                       DO  m = 1, surf_usm_v(l)%ns
    18921957                          surf_usm_v(l)%t_window_av(iwl,m) =                     &
     
    18941959                                          t_window_v(l)%t(iwl,m)
    18951960                       ENDDO
    1896                     ENDDO
     1961                    ENDIF
    18971962
    18981963                CASE ( 'usm_t_green' )
    18991964!--                 green temperature for  iwl layer of walls and land
    1900                     DO  m = 1, surf_usm_h%ns
    1901                        surf_usm_h%t_green_av(iwl,m) =                           &
    1902                                           surf_usm_h%t_green_av(iwl,m) +        &
    1903                                           t_green_h(iwl,m)
    1904                     ENDDO
    1905                     DO  l = 0, 3
     1965                    IF ( l == -1 ) THEN
     1966                       DO  m = 1, surf_usm_h%ns
     1967                          surf_usm_h%t_green_av(iwl,m) =                           &
     1968                                             surf_usm_h%t_green_av(iwl,m) +        &
     1969                                             t_green_h(iwl,m)
     1970                       ENDDO
     1971                    ELSE
    19061972                       DO  m = 1, surf_usm_v(l)%ns
    19071973                          surf_usm_v(l)%t_green_av(iwl,m) =                     &
     
    19091975                                          t_green_v(l)%t(iwl,m)
    19101976                       ENDDO
    1911                     ENDDO
     1977                    ENDIF
    19121978
    19131979                CASE DEFAULT
     
    19221988                CASE ( 'usm_rad_net' )
    19231989!--                 array of complete radiation balance
    1924                     DO  m = 1, surf_usm_h%ns
    1925                        surf_usm_h%rad_net_av(m) =                              &
    1926                                           surf_usm_h%rad_net_av(m) /           &
    1927                                           REAL( average_count_3d, kind=wp )
    1928                     ENDDO
    1929                     DO  l = 0, 3
     1990                    IF ( l == -1 ) THEN
     1991                       DO  m = 1, surf_usm_h%ns
     1992                          surf_usm_h%rad_net_av(m) =                              &
     1993                                             surf_usm_h%rad_net_av(m) /           &
     1994                                             REAL( average_count_3d, kind=wp )
     1995                       ENDDO
     1996                    ELSE
    19301997                       DO  m = 1, surf_usm_v(l)%ns
    19311998                          surf_usm_v(l)%rad_net_av(m) =                        &
     
    19332000                                          REAL( average_count_3d, kind=wp )
    19342001                       ENDDO
    1935                     ENDDO
     2002                    ENDIF
    19362003                   
    19372004                CASE ( 'usm_rad_insw' )
     
    20232090                    ENDDO
    20242091                   
     2092                CASE ( 'usm_rad_pc_inlw' )
     2093                    pcbinlw_av(:) = pcbinlw_av(:) / REAL( average_count_3d, kind=wp )
     2094                   
     2095                CASE ( 'usm_rad_pc_insw' )
     2096                    pcbinsw_av(:) = pcbinsw_av(:) / REAL( average_count_3d, kind=wp )
     2097                   
     2098                CASE ( 'usm_rad_pc_inswdir' )
     2099                    pcbinswdir_av(:) = pcbinswdir_av(:) / REAL( average_count_3d, kind=wp )
     2100                   
     2101                CASE ( 'usm_rad_pc_inswdif' )
     2102                    pcbinswdif_av(:) = pcbinswdif_av(:) / REAL( average_count_3d, kind=wp )
     2103                   
     2104                CASE ( 'usm_rad_pc_inswref' )
     2105                    pcbinswref_av(:) = pcbinswref_av(:) / REAL( average_count_3d, kind=wp )
     2106                   
    20252107                CASE ( 'usm_rad_hf' )
    20262108!--                 array of heat flux from radiation for surfaces after i-th reflection
    2027                     DO  m = 1, surf_usm_h%ns
    2028                        surf_usm_h%surfhf_av(m) =                               &
    2029                                           surf_usm_h%surfhf_av(m) /            &
    2030                                           REAL( average_count_3d, kind=wp )
    2031                     ENDDO
    2032                     DO  l = 0, 3
     2109                    IF ( l == -1 ) THEN
     2110                       DO  m = 1, surf_usm_h%ns
     2111                          surf_usm_h%surfhf_av(m) =                               &
     2112                                             surf_usm_h%surfhf_av(m) /            &
     2113                                             REAL( average_count_3d, kind=wp )
     2114                       ENDDO
     2115                    ELSE
    20332116                       DO  m = 1, surf_usm_v(l)%ns
    20342117                          surf_usm_v(l)%surfhf_av(m) =                         &
     
    20362119                                          REAL( average_count_3d, kind=wp )
    20372120                       ENDDO
    2038                     ENDDO
     2121                    ENDIF
    20392122                   
    20402123                CASE ( 'usm_wshf' )
    20412124!--                 array of sensible heat flux from surfaces (land, roof, wall)
    2042                     DO  m = 1, surf_usm_h%ns
    2043                        surf_usm_h%wshf_eb_av(m) =                              &
    2044                                           surf_usm_h%wshf_eb_av(m) /           &
    2045                                           REAL( average_count_3d, kind=wp )
    2046                     ENDDO
    2047                     DO  l = 0, 3
     2125                    IF ( l == -1 ) THEN
     2126                       DO  m = 1, surf_usm_h%ns
     2127                          surf_usm_h%wshf_eb_av(m) =                              &
     2128                                             surf_usm_h%wshf_eb_av(m) /           &
     2129                                             REAL( average_count_3d, kind=wp )
     2130                       ENDDO
     2131                    ELSE
    20482132                       DO  m = 1, surf_usm_v(l)%ns
    20492133                          surf_usm_v(l)%wshf_eb_av(m) =                        &
     
    20512135                                          REAL( average_count_3d, kind=wp )
    20522136                       ENDDO
    2053                     ENDDO
     2137                    ENDIF
    20542138                   
    20552139                CASE ( 'usm_wghf' )
    20562140!--                 array of heat flux from ground (wall, roof, land)
    2057                     DO  m = 1, surf_usm_h%ns
    2058                        surf_usm_h%wghf_eb_av(m) =                              &
    2059                                           surf_usm_h%wghf_eb_av(m) /           &
    2060                                           REAL( average_count_3d, kind=wp )
    2061                     ENDDO
    2062                     DO  l = 0, 3
     2141                    IF ( l == -1 ) THEN
     2142                       DO  m = 1, surf_usm_h%ns
     2143                          surf_usm_h%wghf_eb_av(m) =                              &
     2144                                             surf_usm_h%wghf_eb_av(m) /           &
     2145                                             REAL( average_count_3d, kind=wp )
     2146                       ENDDO
     2147                    ELSE
    20632148                       DO  m = 1, surf_usm_v(l)%ns
    20642149                          surf_usm_v(l)%wghf_eb_av(m) =                        &
     
    20662151                                          REAL( average_count_3d, kind=wp )
    20672152                       ENDDO
    2068                     ENDDO
     2153                    ENDIF
    20692154                   
    20702155                CASE ( 'usm_wghf_window' )
    20712156!--                 array of heat flux from window ground (wall, roof, land)
    2072                     DO  m = 1, surf_usm_h%ns
    2073                        surf_usm_h%wghf_eb_window_av(m) =                              &
    2074                                           surf_usm_h%wghf_eb_window_av(m) /           &
    2075                                           REAL( average_count_3d, kind=wp )
    2076                     ENDDO
    2077                     DO  l = 0, 3
     2157                    IF ( l == -1 ) THEN
     2158                       DO  m = 1, surf_usm_h%ns
     2159                          surf_usm_h%wghf_eb_window_av(m) =                              &
     2160                                             surf_usm_h%wghf_eb_window_av(m) /           &
     2161                                             REAL( average_count_3d, kind=wp )
     2162                       ENDDO
     2163                    ELSE
    20782164                       DO  m = 1, surf_usm_v(l)%ns
    20792165                          surf_usm_v(l)%wghf_eb_window_av(m) =                        &
     
    20812167                                          REAL( average_count_3d, kind=wp )
    20822168                       ENDDO
    2083                     ENDDO
     2169                    ENDIF
    20842170
    20852171                CASE ( 'usm_wghf_green' )
    20862172!--                 array of heat flux from green ground (wall, roof, land)
    2087                     DO  m = 1, surf_usm_h%ns
    2088                        surf_usm_h%wghf_eb_green_av(m) =                              &
    2089                                           surf_usm_h%wghf_eb_green_av(m) /           &
    2090                                           REAL( average_count_3d, kind=wp )
    2091                     ENDDO
    2092                     DO  l = 0, 3
     2173                    IF ( l == -1 ) THEN
     2174                       DO  m = 1, surf_usm_h%ns
     2175                          surf_usm_h%wghf_eb_green_av(m) =                              &
     2176                                             surf_usm_h%wghf_eb_green_av(m) /           &
     2177                                             REAL( average_count_3d, kind=wp )
     2178                       ENDDO
     2179                    ELSE
    20932180                       DO  m = 1, surf_usm_v(l)%ns
    20942181                          surf_usm_v(l)%wghf_eb_green_av(m) =                        &
     
    20962183                                          REAL( average_count_3d, kind=wp )
    20972184                       ENDDO
    2098                     ENDDO
     2185                    ENDIF
    20992186
    21002187                CASE ( 'usm_iwghf' )
    21012188!--                 array of heat flux from indoor ground (wall, roof, land)
    2102                     DO  m = 1, surf_usm_h%ns
    2103                        surf_usm_h%iwghf_eb_av(m) =                              &
    2104                                           surf_usm_h%iwghf_eb_av(m) /           &
    2105                                           REAL( average_count_3d, kind=wp )
    2106                     ENDDO
    2107                     DO  l = 0, 3
     2189                    IF ( l == -1 ) THEN
     2190                       DO  m = 1, surf_usm_h%ns
     2191                          surf_usm_h%iwghf_eb_av(m) =                              &
     2192                                             surf_usm_h%iwghf_eb_av(m) /           &
     2193                                             REAL( average_count_3d, kind=wp )
     2194                       ENDDO
     2195                    ELSE
    21082196                       DO  m = 1, surf_usm_v(l)%ns
    21092197                          surf_usm_v(l)%iwghf_eb_av(m) =                        &
     
    21112199                                          REAL( average_count_3d, kind=wp )
    21122200                       ENDDO
    2113                     ENDDO
     2201                    ENDIF
    21142202                   
    21152203                CASE ( 'usm_iwghf_window' )
    21162204!--                 array of heat flux from indoor window ground (wall, roof, land)
    2117                     DO  m = 1, surf_usm_h%ns
    2118                        surf_usm_h%iwghf_eb_window_av(m) =                              &
    2119                                           surf_usm_h%iwghf_eb_window_av(m) /           &
    2120                                           REAL( average_count_3d, kind=wp )
    2121                     ENDDO
    2122                     DO  l = 0, 3
     2205                    IF ( l == -1 ) THEN
     2206                       DO  m = 1, surf_usm_h%ns
     2207                          surf_usm_h%iwghf_eb_window_av(m) =                              &
     2208                                             surf_usm_h%iwghf_eb_window_av(m) /           &
     2209                                             REAL( average_count_3d, kind=wp )
     2210                       ENDDO
     2211                    ELSE
    21232212                       DO  m = 1, surf_usm_v(l)%ns
    21242213                          surf_usm_v(l)%iwghf_eb_window_av(m) =                        &
     
    21262215                                          REAL( average_count_3d, kind=wp )
    21272216                       ENDDO
    2128                     ENDDO
     2217                    ENDIF
    21292218                   
    21302219                CASE ( 'usm_t_surf' )
    21312220!--                 surface temperature for surfaces
    2132                     DO  m = 1, surf_usm_h%ns
    2133                        surf_usm_h%t_surf_av(m) =                               &
    2134                                           surf_usm_h%t_surf_av(m) /            &
    2135                                           REAL( average_count_3d, kind=wp )
    2136                     ENDDO
    2137                     DO  l = 0, 3
     2221                    IF ( l == -1 ) THEN
     2222                       DO  m = 1, surf_usm_h%ns
     2223                          surf_usm_h%t_surf_av(m) =                               &
     2224                                             surf_usm_h%t_surf_av(m) /            &
     2225                                             REAL( average_count_3d, kind=wp )
     2226                       ENDDO
     2227                    ELSE
    21382228                       DO  m = 1, surf_usm_v(l)%ns
    21392229                          surf_usm_v(l)%t_surf_av(m) =                         &
     
    21412231                                          REAL( average_count_3d, kind=wp )
    21422232                       ENDDO
    2143                     ENDDO
     2233                    ENDIF
    21442234                   
    21452235                CASE ( 'usm_t_surf_window' )
    21462236!--                 surface temperature for window surfaces
    2147                     DO  m = 1, surf_usm_h%ns
    2148                        surf_usm_h%t_surf_window_av(m) =                               &
    2149                                           surf_usm_h%t_surf_window_av(m) /            &
    2150                                           REAL( average_count_3d, kind=wp )
    2151                     ENDDO
    2152                     DO  l = 0, 3
     2237                    IF ( l == -1 ) THEN
     2238                       DO  m = 1, surf_usm_h%ns
     2239                          surf_usm_h%t_surf_window_av(m) =                               &
     2240                                             surf_usm_h%t_surf_window_av(m) /            &
     2241                                             REAL( average_count_3d, kind=wp )
     2242                       ENDDO
     2243                    ELSE
    21532244                       DO  m = 1, surf_usm_v(l)%ns
    21542245                          surf_usm_v(l)%t_surf_window_av(m) =                         &
     
    21562247                                          REAL( average_count_3d, kind=wp )
    21572248                       ENDDO
    2158                     ENDDO
     2249                    ENDIF
    21592250                   
    21602251                CASE ( 'usm_t_surf_green' )
    21612252!--                 surface temperature for green surfaces
    2162                     DO  m = 1, surf_usm_h%ns
    2163                        surf_usm_h%t_surf_green_av(m) =                               &
    2164                                           surf_usm_h%t_surf_green_av(m) /            &
    2165                                           REAL( average_count_3d, kind=wp )
    2166                     ENDDO
    2167                     DO  l = 0, 3
     2253                    IF ( l == -1 ) THEN
     2254                       DO  m = 1, surf_usm_h%ns
     2255                          surf_usm_h%t_surf_green_av(m) =                               &
     2256                                             surf_usm_h%t_surf_green_av(m) /            &
     2257                                             REAL( average_count_3d, kind=wp )
     2258                       ENDDO
     2259                    ELSE
    21682260                       DO  m = 1, surf_usm_v(l)%ns
    21692261                          surf_usm_v(l)%t_surf_green_av(m) =                         &
     
    21712263                                          REAL( average_count_3d, kind=wp )
    21722264                       ENDDO
    2173                     ENDDO
     2265                    ENDIF
    21742266                   
    21752267                CASE ( 'usm_t_surf_10cm' )
    21762268!--                 near surface temperature for whole surfaces
    2177                     DO  m = 1, surf_usm_h%ns
    2178                        surf_usm_h%t_surf_10cm_av(m) =                               &
    2179                                           surf_usm_h%t_surf_10cm_av(m) /            &
    2180                                           REAL( average_count_3d, kind=wp )
    2181                     ENDDO
    2182                     DO  l = 0, 3
     2269                    IF ( l == -1 ) THEN
     2270                       DO  m = 1, surf_usm_h%ns
     2271                          surf_usm_h%t_surf_10cm_av(m) =                               &
     2272                                             surf_usm_h%t_surf_10cm_av(m) /            &
     2273                                             REAL( average_count_3d, kind=wp )
     2274                       ENDDO
     2275                    ELSE
    21832276                       DO  m = 1, surf_usm_v(l)%ns
    21842277                          surf_usm_v(l)%t_surf_10cm_av(m) =                         &
     
    21862279                                          REAL( average_count_3d, kind=wp )
    21872280                       ENDDO
    2188                     ENDDO
     2281                    ENDIF
    21892282                   
    21902283                CASE ( 'usm_t_wall' )
    21912284!--                 wall temperature for  iwl layer of walls and land
    2192                     DO  m = 1, surf_usm_h%ns
    2193                        surf_usm_h%t_wall_av(iwl,m) =                           &
    2194                                           surf_usm_h%t_wall_av(iwl,m) /        &
    2195                                           REAL( average_count_3d, kind=wp )
    2196                     ENDDO
    2197                     DO  l = 0, 3
     2285                    IF ( l == -1 ) THEN
     2286                       DO  m = 1, surf_usm_h%ns
     2287                          surf_usm_h%t_wall_av(iwl,m) =                           &
     2288                                             surf_usm_h%t_wall_av(iwl,m) /        &
     2289                                             REAL( average_count_3d, kind=wp )
     2290                       ENDDO
     2291                    ELSE
    21982292                       DO  m = 1, surf_usm_v(l)%ns
    21992293                          surf_usm_v(l)%t_wall_av(iwl,m) =                     &
     
    22012295                                          REAL( average_count_3d, kind=wp )
    22022296                       ENDDO
    2203                     ENDDO
     2297                    ENDIF
    22042298
    22052299                CASE ( 'usm_t_window' )
    22062300!--                 window temperature for  iwl layer of walls and land
    2207                     DO  m = 1, surf_usm_h%ns
    2208                        surf_usm_h%t_window_av(iwl,m) =                           &
    2209                                           surf_usm_h%t_window_av(iwl,m) /        &
    2210                                           REAL( average_count_3d, kind=wp )
    2211                     ENDDO
    2212                     DO  l = 0, 3
     2301                    IF ( l == -1 ) THEN
     2302                       DO  m = 1, surf_usm_h%ns
     2303                          surf_usm_h%t_window_av(iwl,m) =                           &
     2304                                             surf_usm_h%t_window_av(iwl,m) /        &
     2305                                             REAL( average_count_3d, kind=wp )
     2306                       ENDDO
     2307                    ELSE
    22132308                       DO  m = 1, surf_usm_v(l)%ns
    22142309                          surf_usm_v(l)%t_window_av(iwl,m) =                     &
     
    22162311                                          REAL( average_count_3d, kind=wp )
    22172312                       ENDDO
    2218                     ENDDO
     2313                    ENDIF
    22192314
    22202315                CASE ( 'usm_t_green' )
    22212316!--                 green temperature for  iwl layer of walls and land
    2222                     DO  m = 1, surf_usm_h%ns
    2223                        surf_usm_h%t_green_av(iwl,m) =                           &
    2224                                           surf_usm_h%t_green_av(iwl,m) /        &
    2225                                           REAL( average_count_3d, kind=wp )
    2226                     ENDDO
    2227                     DO  l = 0, 3
     2317                    IF ( l == -1 ) THEN
     2318                       DO  m = 1, surf_usm_h%ns
     2319                          surf_usm_h%t_green_av(iwl,m) =                           &
     2320                                             surf_usm_h%t_green_av(iwl,m) /        &
     2321                                             REAL( average_count_3d, kind=wp )
     2322                       ENDDO
     2323                    ELSE
    22282324                       DO  m = 1, surf_usm_v(l)%ns
    22292325                          surf_usm_v(l)%t_green_av(iwl,m) =                     &
     
    22312327                                          REAL( average_count_3d, kind=wp )
    22322328                       ENDDO
    2233                     ENDDO
     2329                    ENDIF
    22342330
    22352331
     
    23092405             var(1:9)  == 'usm_wshf_'  .OR.  var(1:9) == 'usm_wghf_' .OR.                 &
    23102406             var(1:16) == 'usm_wghf_window_' .OR. var(1:15) == 'usm_wghf_green_' .OR.     &
    2311              var(1:10) == 'usm_iwghf_' .OR. var(1:17) == 'usm_iwghf_window_' )  THEN
     2407             var(1:10) == 'usm_iwghf_' .OR. var(1:17) == 'usm_iwghf_window_' .OR.         &
     2408             var(1:17) == 'usm_surfwintrans_' )  THEN
    23122409            unit = 'W/m2'
    2313         ELSE IF ( var(1:10) == 'usm_t_surf'   .OR.  var(1:10) == 'usm_t_wall' .OR.         &
     2410        ELSE IF ( var(1:10) == 'usm_t_surf'   .OR.  var(1:10) == 'usm_t_wall' .OR.        &
    23142411                  var(1:12) == 'usm_t_window' .OR. var(1:17) == 'usm_t_surf_window' .OR.  &
    23152412                  var(1:16) == 'usm_t_surf_green'  .OR.                                   &
    23162413                  var(1:11) == 'usm_t_green' .OR.                                         &
    2317                   var(1:15) == 'usm_t_surf_10cm')  THEN
     2414                  var(1:15) == 'usm_t_surf_10cm' )  THEN
    23182415            unit = 'K'
     2416        ELSE IF ( var == 'usm_rad_pc_inlw'  .OR.  var == 'usm_rad_pc_insw'  .OR.          &
     2417                  var == 'usm_rad_pc_inswdir'  .OR.  var == 'usm_rad_pc_inswdif'  .OR.    &
     2418                  var == 'usm_rad_pc_inswref' )  THEN
     2419            unit = 'W'
    23192420        ELSE IF ( var(1:9) == 'usm_surfz'  .OR.  var(1:7) == 'usm_svf'  .OR.              &
    23202421                  var(1:7) == 'usm_dif'  .OR.  var(1:11) == 'usm_surfcat'  .OR.           &
     
    24172518        INTEGER(iwp), DIMENSION(0:nd-1)                        :: dirstart
    24182519        INTEGER(iwp), DIMENSION(0:nd-1)                        :: dirend
    2419         INTEGER(iwp)                                           :: ids,idsint,idsidx,isurf,isvf,isurfs,isurflt
     2520        INTEGER(iwp)                                           :: ids,idsint,idsidx,isurf,isvf,isurfs,isurflt,ipcgb
    24202521        INTEGER(iwp)                                           :: is,js,ks,i,j,k,iwl,istat, l, m
    24212522
     
    24312532            k = len(TRIM(var))
    24322533            j = len(TRIM(dirname(i)))
    2433             IF ( var(k-j+1:k) == dirname(i) )  THEN
     2534            IF ( TRIM(var(k-j+1:k)) == TRIM(dirname(i)) )  THEN
    24342535                ids = i
    24352536                idsint = dirint(ids)
     
    28022903                   ENDIF
    28032904                 ENDIF
     2905              ENDDO
     2906
     2907          CASE ( 'usm_rad_pc_inlw' )
     2908!--           array of lw radiation absorbed by plant canopy
     2909              DO ipcgb = 1, npcbl
     2910                  IF ( av == 0 )  THEN
     2911                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinlw(ipcgb)
     2912                  ELSE
     2913                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinlw_av(ipcgb)
     2914                  ENDIF
     2915              ENDDO
     2916
     2917          CASE ( 'usm_rad_pc_insw' )
     2918!--           array of sw radiation absorbed by plant canopy
     2919              DO ipcgb = 1, npcbl
     2920                  IF ( av == 0 )  THEN
     2921                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinsw(ipcgb)
     2922                  ELSE
     2923                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinsw_av(ipcgb)
     2924                  ENDIF
     2925              ENDDO
     2926
     2927          CASE ( 'usm_rad_pc_inswdir' )
     2928!--           array of direct sw radiation absorbed by plant canopy
     2929              DO ipcgb = 1, npcbl
     2930                  IF ( av == 0 )  THEN
     2931                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdir(ipcgb)
     2932                  ELSE
     2933                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdir_av(ipcgb)
     2934                  ENDIF
     2935              ENDDO
     2936
     2937          CASE ( 'usm_rad_pc_inswdif' )
     2938!--           array of diffuse sw radiation absorbed by plant canopy
     2939              DO ipcgb = 1, npcbl
     2940                  IF ( av == 0 )  THEN
     2941                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdif(ipcgb)
     2942                  ELSE
     2943                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswdif_av(ipcgb)
     2944                  ENDIF
     2945              ENDDO
     2946
     2947          CASE ( 'usm_rad_pc_inswref' )
     2948!--           array of reflected sw radiation absorbed by plant canopy
     2949              DO ipcgb = 1, npcbl
     2950                  IF ( av == 0 )  THEN
     2951                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinsw(ipcgb)      &
     2952                                                                              - pcbinswdir(ipcgb) &
     2953                                                                              - pcbinswdif(ipcgb)
     2954                  ELSE
     2955                      temp_pf(pcbl(iz,ipcgb),pcbl(iy,ipcgb),pcbl(ix,ipcgb)) = pcbinswref_av(ipcgb)
     2956                  ENDIF
    28042957              ENDDO
    28052958 
     
    33563509          CASE DEFAULT
    33573510              found = .FALSE.
    3358              
     3511              RETURN
    33593512        END SELECT
    33603513
     
    33993552             var(1:14) == 'usm_rad_outsw_'  .OR.  var(1:14) == 'usm_rad_outlw_'  .OR.       &
    34003553             var(1:14) == 'usm_rad_ressw_'  .OR.  var(1:14) == 'usm_rad_reslw_'  .OR.       &
    3401              var(1:11) == 'usm_rad_hf_'  .OR.                                               &
     3554             var(1:11) == 'usm_rad_hf_'  .OR.  var == 'usm_rad_pc_inlw'  .OR.               &
     3555             var == 'usm_rad_pc_insw'  .OR.  var == 'usm_rad_pc_inswdir'  .OR.              &
     3556             var == 'usm_rad_pc_inswdif'  .OR.  var == 'usm_rad_pc_inswref'  .OR.           &
    34023557             var(1:9) == 'usm_wshf_'  .OR.  var(1:9) == 'usm_wghf_'  .OR.                   &
    34033558             var(1:16) == 'usm_wghf_window_'  .OR. var(1:15) == 'usm_wghf_green_' .OR.      &
     
    49655120                                 * wintend(nzb_wall:nzt_wall) + tsc(3)            &
    49665121                                 * surf_usm_h%tt_window_m(nzb_wall:nzt_wall,m) )   
    4967            
     5122
    49685123!
    49695124!--        calculate t_wall tendencies for the next Runge-Kutta step
     
    51685323              ENDIF
    51695324           ENDDO
     5325!!!!!!!!!!!!!HACK!!!!!!!!!!!!!!!!!!!
     5326!           t_window_v_p(l)%t = t_wall_v_p(l)%t
     5327!           surf_usm_v(l)%tt_window_m  = surf_usm_v(l)%tt_wall_m
     5328!           t_green_v_p(l)%t = t_wall_v_p(l)%t
     5329!           surf_usm_v(l)%tt_green_m  = surf_usm_v(l)%tt_wall_m
     5330!!!!!!!!!!!!!HACK!!!!!!!!!!!!!!!!!!!
    51705331        ENDDO
    51715332
     
    53205481                           naheatlayers,                                       &
    53215482                           pedestrian_category,                                &
     5483                           roughness_concrete,                                 &
    53225484                           read_wall_temp_3d,                                  &
    53235485                           roof_category,                                      &
     
    53375499                           naheatlayers,                                       &
    53385500                           pedestrian_category,                                &
     5501                           roughness_concrete,                                 &
    53395502                           read_wall_temp_3d,                                  &
    53405503                           roof_category,                                      &
     
    69377100           ENDDO
    69387101           IF ( ip == -99999 )  THEN
    6939 !--           wall category not found
    6940               WRITE (message_string, "(A,I5,A,3I5)") 'wall category ', it,     &
    6941                                      ' not found  for i,j,k=', iw,jw,kw
    6942               CALL message( 'usm_read_urban_surface', 'PA0506', 1, 2, 0, 6, 0 )
     7102!--           land/roof category not found
     7103              WRITE (9,"(A,I5,A,3I5)") 'land/roof category ', it,     &
     7104                                       ' not found  for i,j,k=', iw,jw,kw
     7105              FLUSH(9)
     7106              IF ( surf_usm_h%isroof_surf(m) ) THEN
     7107                 category = roof_category
     7108              ELSE
     7109                 category = land_category
     7110              ENDIF
     7111              DO k = 1, n_surface_types
     7112                 IF ( surface_type_codes(k) == roof_category ) THEN
     7113                    ip = k
     7114                    EXIT
     7115                 ENDIF
     7116              ENDDO
     7117              IF ( ip == -99999 )  THEN
     7118!--              default land/roof category not found
     7119                 WRITE (9,"(A,I5,A,3I5)") 'Default land/roof category', category, ' not found!'
     7120                 FLUSH(9)
     7121                 ip = 1
     7122              ENDIF
    69437123           ENDIF
    69447124!
     
    70367216                 surf_usm_v(l)%albedo(:,m)    = -1.0_wp
    70377217                 surf_usm_v(l)%thickness_wall(m) = -1.0_wp
     7218                 surf_usm_v(l)%thickness_window(m)   = -1.0_wp
     7219                 surf_usm_v(l)%thickness_green(m)    = -1.0_wp
     7220                 surf_usm_v(l)%transmissivity(m)  = -1.0_wp
    70387221              ELSE IF ( kw <= usm_par(ii,jw,iw) )  THEN
    70397222!--                 pedestrian zone
     
    70897272              ELSE
    70907273!
     7274                 WRITE(9,*) 'Problem reading USM data:'
     7275                 WRITE(9,*) l,i,j,kw,get_topography_top_index_ji( j, i, 's' )
     7276                 WRITE(9,*) ii,iw,jw,kw,get_topography_top_index_ji( jw, iw, 's' )
     7277                 WRITE(9,*) usm_par(ii,jw,iw),usm_par(ii+1,jw,iw)
     7278                 WRITE(9,*) usm_par(ii+2,jw,iw),usm_par(ii+3,jw,iw)
     7279                 WRITE(9,*) usm_par(ii+4,jw,iw),usm_par(ii+5,jw,iw)
     7280                 WRITE(9,*) kw,roof_height_limit,wall_category,roof_category
     7281                 FLUSH(9)
    70917282!--              supply the default category
    70927283                 IF ( kw <= roof_height_limit ) THEN
     
    70977288                 surf_usm_v(l)%albedo(:,m)    = -1.0_wp
    70987289                 surf_usm_v(l)%thickness_wall(m) = -1.0_wp
     7290                 surf_usm_v(l)%thickness_window(m) = -1.0_wp
     7291                 surf_usm_v(l)%thickness_green(m) = -1.0_wp
     7292                 surf_usm_v(l)%transmissivity(m)  = -1.0_wp
    70997293              ENDIF
    71007294!
     
    71107304              IF ( ip == -99999 )  THEN
    71117305!--              wall category not found
    7112                  WRITE (message_string, "(A,I7,A,3I5)") 'wall category ', it,  &
    7113                                         ' not found  for i,j,k=', iw,jw,kw
    7114                  WRITE(9,*) message_string
     7306                 WRITE (9, "(A,I7,A,3I5)") 'wall category ', it,  &
     7307                                           ' not found  for i,j,k=', iw,jw,kw
     7308                 FLUSH(9)
     7309                 category = wall_category
     7310                 DO k = 1, n_surface_types
     7311                    IF ( surface_type_codes(k) == category ) THEN
     7312                       ip = k
     7313                       EXIT
     7314                    ENDIF
     7315                 ENDDO
     7316                 IF ( ip == -99999 )  THEN
     7317!--                 default wall category not found
     7318                    WRITE (9, "(A,I5,A,3I5)") 'Default wall category', category, ' not found!'
     7319                    FLUSH(9)
     7320                    ip = 1
     7321                 ENDIF
    71157322              ENDIF
     7323
    71167324!
    71177325!--           Albedo
     
    71927400        ENDDO
    71937401
     7402       
     7403        WRITE(9,*) 'Urban surfaces read'
     7404        FLUSH(9)
     7405       
    71947406        CALL location_message( '    types and parameters of urban surfaces read', .TRUE. )
    71957407   
     
    74737685           IF ( humidity )  surf_usm_h%vpt_surface(m) =                        &
    74747686                                                   surf_usm_h%pt_surface(m)
    7475                        
     7687
    74767688!--        calculate true tendency
    74777689           stend = ( t_surf_h_p(m) - t_surf_h(m) - dt_3d * tsc(3) *           &
     
    75087720!
    75097721!--        calculate fluxes
    7510 !--        rad_net_l is never used!           
     7722!--        rad_net_l is never used!
    75117723           surf_usm_h%rad_net_l(m) = surf_usm_h%rad_net_l(m) +                           &
    75127724                                     surf_usm_h%frac(ind_veg_wall,m) *                   &
     
    75227734           surf_usm_h%wghf_eb(m)   = lambda_surface *                         &
    75237735                                      ( t_surf_h_p(m) - t_wall_h(nzb_wall,m) )
    7524            surf_usm_h%wghf_eb_green(m)  = lambda_surface_green *                        &
     7736           surf_usm_h%wghf_eb_green(m)  = lambda_surface_green *                         &
    75257737                                          ( t_surf_green_h_p(m) - t_green_h(nzb_wall,m) )
    7526            surf_usm_h%wghf_eb_window(m) = lambda_surface_window *                       &
     7738           surf_usm_h%wghf_eb_window(m) = lambda_surface_window *                        &
    75277739                                           ( t_surf_window_h_p(m) - t_window_h(nzb_wall,m) )
    75287740
     
    75397751!--        diffusion_s, surface_layer_fluxes,...
    75407752           surf_usm_h%shf(m) = surf_usm_h%wshf_eb(m) / c_p
    7541 
     7753     
    75427754       ENDDO
    75437755!
     
    75627774#if ! defined( __nopointer )         
    75637775!
    7564 !--          calculate rho * c_p coefficient at surface layer
     7776!--          calculate rho * c_p coefficient at wall layer
    75657777             rho_cp  = c_p * hyp(k) / ( r_d * surf_usm_v(l)%pt1(m) * exner(k) )
    75667778#endif
     
    75897801!--          obtained by simple linear interpolation. ( An alternative would
    75907802!--          be an logarithmic interpolation. )
    7591 !--          A roughness lenght of 0.001 is assumed for concrete (the inverse,
    7592 !--          1000 is used in the nominator for scaling)
    7593              surf_usm_v(l)%r_a(m) = rho_cp / ( surf_usm_v(l)%z0(m) * 1000.0_wp &
    7594                         * ( 11.8_wp + 4.2_wp *                                 &
     7803!--          Parameter roughness_concrete (default value = 0.001) is used
     7804!--          to calculation of roughness relative to concrete
     7805             surf_usm_v(l)%r_a(m) = rho_cp / ( surf_usm_v(l)%z0(m) /          &
     7806                        roughness_concrete * ( 11.8_wp + 4.2_wp *              &
    75957807                        SQRT( MAX( ( ( u(k,j,i) + u(k,j,i+1) ) * 0.5_wp )**2 + &
    75967808                                   ( ( v(k,j,i) + v(k,j+1,i) ) * 0.5_wp )**2 + &
     
    76067818             f_shf_window  = rho_cp / surf_usm_v(l)%r_a(m)
    76077819             f_shf_green   = rho_cp / surf_usm_v(l)%r_a(m)
    7608 
    7609 
    76107820
    76117821!--          add LW up so that it can be removed in prognostic equation
     
    76577867                           ( surf_usm_v(l)%c_surface_green(m) + coef_green_2 * dt_3d * tsc(2) )
    76587868
    7659 
    7660 
    76617869!--           add RK3 term
    76627870              t_surf_v_p(l)%t(m) = t_surf_v_p(l)%t(m) + dt_3d * tsc(3) *       &
     
    76777885              IF ( humidity )  surf_usm_v(l)%vpt_surface(m) =                  &
    76787886                                                    surf_usm_v(l)%pt_surface(m)
    7679            
     7887
    76807888!--           calculate true tendency
    76817889              stend = ( t_surf_v_p(l)%t(m) - t_surf_v(l)%t(m) - dt_3d * tsc(3) *&
     
    77667974           dtime = mod(simulated_time + time_utc_init, 24.0_wp*3600.0_wp)
    77677975           dhour = INT(dtime/3600.0_wp)
    7768            DO m = 1, naheatlayers
    7769 !--           Get indices of respective grid point
    7770               i = surf_usm_h%i(m)
    7771               j = surf_usm_h%j(m)
    7772               k = surf_usm_h%k(m)
    7773               IF ( k > get_topography_top_index_ji( j, i, 's' )  .AND. &
    7774                    k <= naheatlayers )  THEN
    7775 !--              increase of pt in box i,j,k in time dt_3d
    7776 !--              given to anthropogenic heat aheat*acoef (W*m-2)
    7777 !--              linear interpolation of coeficient
    7778                  acoef = (REAL(dhour+1,wp)-dtime/3600.0_wp)*aheatprof(k,dhour) + &
    7779                          (dtime/3600.0_wp-REAL(dhour,wp))*aheatprof(k,dhour+1)
    7780                  IF ( aheat(k,j,i) > 0.0_wp )  THEN
    7781                     pt(k,j,i) = pt(k,j,i) + aheat(k,j,i)*acoef*dt_3d/(exner(k)*rho_cp*dzu(k))
    7782                  ENDIF
    7783               ENDIF
     7976           DO i = nxl, nxr
     7977              DO j = nys, nyn
     7978                 DO k = nzub, min(nzut,naheatlayers)
     7979                    IF ( k > get_topography_top_index_ji( j, i, 's' ) ) THEN
     7980!--                    increase of pt in box i,j,k in time dt_3d
     7981!--                    given to anthropogenic heat aheat*acoef (W*m-2)
     7982!--                    linear interpolation of coeficient
     7983                       acoef = (REAL(dhour+1,wp)-dtime/3600.0_wp)*aheatprof(k,dhour) + &
     7984                               (dtime/3600.0_wp-REAL(dhour,wp))*aheatprof(k,dhour+1)
     7985                       IF ( aheat(k,j,i) > 0.0_wp )  THEN
     7986!--                       calculate rho * c_p coefficient at layer k
     7987                          rho_cp  = c_p * hyp(k) / ( r_d * pt(k+1,j,i) * exner(k) )
     7988                          pt(k,j,i) = pt(k,j,i) + aheat(k,j,i)*acoef*dt_3d/(exner(k)*rho_cp*dz(1))
     7989                       ENDIF
     7990                    ENDIF
     7991                 ENDDO
     7992              ENDDO
    77847993           ENDDO
    77857994
Note: See TracChangeset for help on using the changeset viewer.