Ignore:
Timestamp:
Sep 9, 2020 8:27:58 PM (4 years ago)
Author:
pavelkrc
Message:

Radiative transfer model RTM version 4.1

File:
1 edited

Legend:

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

    r4646 r4671  
    2424! -----------------
    2525! $Id$
     26! Implementation of downward facing USM and LSM surfaces
     27!
     28! 4646 2020-08-24 16:02:40Z raasch
    2629! file re-formatted to follow the PALM coding standard
    2730!
     
    523526       !$ACC PRESENT(e, u, v, w, km, kh, p, pt) &
    524527       !$ACC PRESENT(ddx, ddy, ddzu, ddzw) &
    525        !$ACC PRESENT(surf_def_h(0), surf_lsm_h, surf_usm_h) &
     528       !$ACC PRESENT(surf_def_h(0), surf_lsm_h(0), surf_usm_h(0)) &
    526529       !$ACC PRESENT(sums_l)
    527530       DO  i = nxl, nxr
     
    685688                                            surf_def_h(0)%pt_surface(m) * rmask(j,i,sr)
    686689             ENDIF
    687              IF ( surf_lsm_h%end_index(j,i) >= surf_lsm_h%start_index(j,i) )  THEN
    688                 m = surf_lsm_h%start_index(j,i)
     690             IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) )  THEN
     691                m = surf_lsm_h(0)%start_index(j,i)
    689692                !$ACC ATOMIC
    690693                sums_l(nzb,pr_palm,tn)   = sums_l(nzb,pr_palm,tn) +                                &
    691                                            surf_lsm_h%us(m)   * rmask(j,i,sr)
     694                                           surf_lsm_h(0)%us(m)   * rmask(j,i,sr)
    692695                !$ACC ATOMIC
    693696                sums_l(nzb+1,pr_palm,tn) = sums_l(nzb+1,pr_palm,tn) +                              &
    694                                            surf_lsm_h%usws(m) * rmask(j,i,sr)
     697                                           surf_lsm_h(0)%usws(m) * rmask(j,i,sr)
    695698                !$ACC ATOMIC
    696699                sums_l(nzb+2,pr_palm,tn) = sums_l(nzb+2,pr_palm,tn) +                              &
    697                                            surf_lsm_h%vsws(m) * rmask(j,i,sr)
     700                                           surf_lsm_h(0)%vsws(m) * rmask(j,i,sr)
    698701                !$ACC ATOMIC
    699702                sums_l(nzb+3,pr_palm,tn) = sums_l(nzb+3,pr_palm,tn) +                              &
    700                                            surf_lsm_h%ts(m)   * rmask(j,i,sr)
     703                                           surf_lsm_h(0)%ts(m)   * rmask(j,i,sr)
    701704#ifndef _OPENACC
    702705                IF ( humidity )  THEN
    703706                   sums_l(nzb+12,pr_palm,tn) = sums_l(nzb+12,pr_palm,tn) +                         &
    704                                                surf_lsm_h%qs(m)   * rmask(j,i,sr)
     707                                               surf_lsm_h(0)%qs(m)   * rmask(j,i,sr)
    705708                ENDIF
    706709                IF ( passive_scalar )  THEN
    707710                   sums_l(nzb+13,pr_palm,tn) = sums_l(nzb+13,pr_palm,tn) +                         &
    708                                                surf_lsm_h%ss(m)   * rmask(j,i,sr)
     711                                               surf_lsm_h(0)%ss(m)   * rmask(j,i,sr)
    709712                ENDIF
    710713#endif
     
    713716                !$ACC ATOMIC
    714717                sums_l(nzb+14,pr_palm,tn) = sums_l(nzb+14,pr_palm,tn) +                            &
    715                                             surf_lsm_h%pt_surface(m) * rmask(j,i,sr)
     718                                            surf_lsm_h(0)%pt_surface(m) * rmask(j,i,sr)
    716719             ENDIF
    717              IF ( surf_usm_h%end_index(j,i) >= surf_usm_h%start_index(j,i) )  THEN
    718                 m = surf_usm_h%start_index(j,i)
     720             IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) )  THEN
     721                m = surf_usm_h(0)%start_index(j,i)
    719722                !$ACC ATOMIC
    720723                sums_l(nzb,pr_palm,tn)   = sums_l(nzb,pr_palm,tn) +                                &
    721                                            surf_usm_h%us(m)   * rmask(j,i,sr)
     724                                           surf_usm_h(0)%us(m)   * rmask(j,i,sr)
    722725                !$ACC ATOMIC
    723726                sums_l(nzb+1,pr_palm,tn) = sums_l(nzb+1,pr_palm,tn) +                              &
    724                                            surf_usm_h%usws(m) * rmask(j,i,sr)
     727                                           surf_usm_h(0)%usws(m) * rmask(j,i,sr)
    725728                !$ACC ATOMIC
    726729                sums_l(nzb+2,pr_palm,tn) = sums_l(nzb+2,pr_palm,tn) +                              &
    727                                            surf_usm_h%vsws(m) * rmask(j,i,sr)
     730                                           surf_usm_h(0)%vsws(m) * rmask(j,i,sr)
    728731                !$ACC ATOMIC
    729732                sums_l(nzb+3,pr_palm,tn) = sums_l(nzb+3,pr_palm,tn) +                              &
    730                                            surf_usm_h%ts(m)   * rmask(j,i,sr)
     733                                           surf_usm_h(0)%ts(m)   * rmask(j,i,sr)
    731734#ifndef _OPENACC
    732735                IF ( humidity )  THEN
    733736                   sums_l(nzb+12,pr_palm,tn) = sums_l(nzb+12,pr_palm,tn) +                         &
    734                                                surf_usm_h%qs(m)   * rmask(j,i,sr)
     737                                               surf_usm_h(0)%qs(m)   * rmask(j,i,sr)
    735738                ENDIF
    736739                IF ( passive_scalar )  THEN
    737740                   sums_l(nzb+13,pr_palm,tn) = sums_l(nzb+13,pr_palm,tn) +                         &
    738                                                surf_usm_h%ss(m) * rmask(j,i,sr)
     741                                               surf_usm_h(0)%ss(m) * rmask(j,i,sr)
    739742                ENDIF
    740743#endif
     
    743746                !$ACC ATOMIC
    744747                sums_l(nzb+14,pr_palm,tn) = sums_l(nzb+14,pr_palm,tn) +                            &
    745                                             surf_usm_h%pt_surface(m)  * rmask(j,i,sr)
     748                                            surf_usm_h(0)%pt_surface(m)  * rmask(j,i,sr)
    746749             ENDIF
    747750          ENDDO !j-loop
     
    816819       !$ACC PRESENT(wall_flags_total_0, rmask, ddzu, rho_air_zw, hom(:,1,1:4,sr)) &
    817820       !$ACC PRESENT(heatflux_output_conversion, momentumflux_output_conversion) &
    818        !$ACC PRESENT(surf_def_h(0:2), surf_lsm_h, surf_usm_h) &
     821       !$ACC PRESENT(surf_def_h(0:2), surf_lsm_h(0:1), surf_usm_h(0:1) &
    819822       !$ACC PRESENT(sums_l)
    820823       DO  i = nxl, nxr
     
    988991
    989992                   ENDIF
    990                 ENDDO
    991                 IF ( surf_lsm_h%end_index(j,i) >= surf_lsm_h%start_index(j,i) )  THEN
    992                    m = surf_lsm_h%start_index(j,i)
    993                    !$ACC ATOMIC
    994                    sums_l(nzb,12,tn) = sums_l(nzb,12,tn) +                                         &
    995                                        momentumflux_output_conversion(nzb) *                       &
    996                                        surf_lsm_h%usws(m) * rmask(j,i,sr)     ! w"u"
    997                    !$ACC ATOMIC
    998                    sums_l(nzb,14,tn) = sums_l(nzb,14,tn) +                                         &
    999                                        momentumflux_output_conversion(nzb) *                       &
    1000                                        surf_lsm_h%vsws(m) * rmask(j,i,sr)     ! w"v"
    1001                    !$ACC ATOMIC
    1002                    sums_l(nzb,16,tn) = sums_l(nzb,16,tn) +                                         &
    1003                                        heatflux_output_conversion(nzb) *                           &
    1004                                        surf_lsm_h%shf(m)  * rmask(j,i,sr)     ! w"pt"
     993                   IF ( surf_lsm_h(l)%end_index(j,i) >= surf_lsm_h(l)%start_index(j,i) )  THEN
     994                      m = surf_lsm_h(l)%start_index(j,i)
     995                      !$ACC ATOMIC
     996                      sums_l(nzb,12,tn) = sums_l(nzb,12,tn) +                                         &
     997                                          momentumflux_output_conversion(nzb) *                       &
     998                                          surf_lsm_h(l)%usws(m) * rmask(j,i,sr)     ! w"u"
     999                      !$ACC ATOMIC
     1000                      sums_l(nzb,14,tn) = sums_l(nzb,14,tn) +                                         &
     1001                                          momentumflux_output_conversion(nzb) *                       &
     1002                                          surf_lsm_h(l)%vsws(m) * rmask(j,i,sr)     ! w"v"
     1003                      !$ACC ATOMIC
     1004                      sums_l(nzb,16,tn) = sums_l(nzb,16,tn) +                                         &
     1005                                          heatflux_output_conversion(nzb) *                           &
     1006                                          surf_lsm_h(l)%shf(m)  * rmask(j,i,sr)     ! w"pt"
    10051007#if 0
    1006                    sums_l(nzb,58,tn) = sums_l(nzb,58,tn) +                                         &
    1007                                        0.0_wp * rmask(j,i,sr)        ! u"pt"
    1008                    sums_l(nzb,61,tn) = sums_l(nzb,61,tn) +                                         &
    1009                                        0.0_wp * rmask(j,i,sr)        ! v"pt"
     1008                      sums_l(nzb,58,tn) = sums_l(nzb,58,tn) +                                         &
     1009                                          0.0_wp * rmask(j,i,sr)        ! u"pt"
     1010                      sums_l(nzb,61,tn) = sums_l(nzb,61,tn) +                                         &
     1011                                          0.0_wp * rmask(j,i,sr)        ! v"pt"
    10101012#endif
    10111013#ifndef _OPENACC
    1012                    IF ( ocean_mode )  THEN
    1013                       sums_l(nzb,65,tn) = sums_l(nzb,65,tn) +                                      &
    1014                                           surf_lsm_h%sasws(m) * rmask(j,i,sr)  ! w"sa"
     1014                      IF ( ocean_mode )  THEN
     1015                         sums_l(nzb,65,tn) = sums_l(nzb,65,tn) +                                      &
     1016                                             surf_lsm_h(l)%sasws(m) * rmask(j,i,sr)  ! w"sa"
     1017                      ENDIF
     1018                      IF ( humidity )  THEN
     1019                         sums_l(nzb,48,tn) = sums_l(nzb,48,tn) +                                      &
     1020                                             waterflux_output_conversion(nzb) *                       &
     1021                                             surf_lsm_h(l)%qsws(m) * rmask(j,i,sr)  ! w"q" (w"qv")
     1022                         sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                    &
     1023                                             ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) * surf_lsm_h(l)%shf(m) +  &
     1024                                               0.61_wp * pt(nzb,j,i) * surf_lsm_h(l)%qsws(m) )           &
     1025                                             * heatflux_output_conversion(nzb)
     1026                         IF ( cloud_droplets )  THEN
     1027                            sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                 &
     1028                                                ( 1.0_wp + 0.61_wp * q(nzb,j,i) -                     &
     1029                                                  ql(nzb,j,i) ) * surf_lsm_h(l)%shf(m) +                 &
     1030                                                  0.61_wp * pt(nzb,j,i) * surf_lsm_h(l)%qsws(m) )        &
     1031                                                * heatflux_output_conversion(nzb)
     1032                         ENDIF
     1033                         IF ( bulk_cloud_model )  THEN
     1034!
     1035!--                         Formula does not work if ql(nzb) /= 0.0
     1036                            sums_l(nzb,51,tn) = sums_l(nzb,51,tn) +                                   &
     1037                                                waterflux_output_conversion(nzb) *                    &
     1038                                                surf_lsm_h(l)%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv")
     1039                         ENDIF
     1040                      ENDIF
     1041                      IF ( passive_scalar )  THEN
     1042                         sums_l(nzb,117,tn) = sums_l(nzb,117,tn) +                                    &
     1043                                              surf_lsm_h(l)%ssws(m) * rmask(j,i,sr) ! w"s"
     1044                      ENDIF
     1045#endif
     1046
    10151047                   ENDIF
    1016                    IF ( humidity )  THEN
    1017                       sums_l(nzb,48,tn) = sums_l(nzb,48,tn) +                                      &
    1018                                           waterflux_output_conversion(nzb) *                       &
    1019                                           surf_lsm_h%qsws(m) * rmask(j,i,sr)  ! w"q" (w"qv")
    1020                       sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                    &
    1021                                           ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) * surf_lsm_h%shf(m) +  &
    1022                                             0.61_wp * pt(nzb,j,i) * surf_lsm_h%qsws(m) )           &
    1023                                           * heatflux_output_conversion(nzb)
    1024                       IF ( cloud_droplets )  THEN
    1025                          sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                 &
    1026                                              ( 1.0_wp + 0.61_wp * q(nzb,j,i) -                     &
    1027                                                ql(nzb,j,i) ) * surf_lsm_h%shf(m) +                 &
    1028                                                0.61_wp * pt(nzb,j,i) * surf_lsm_h%qsws(m) )        &
    1029                                              * heatflux_output_conversion(nzb)
    1030                       ENDIF
    1031                       IF ( bulk_cloud_model )  THEN
    1032 !
    1033 !--                      Formula does not work if ql(nzb) /= 0.0
    1034                          sums_l(nzb,51,tn) = sums_l(nzb,51,tn) +                                   &
    1035                                              waterflux_output_conversion(nzb) *                    &
    1036                                              surf_lsm_h%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv")
    1037                       ENDIF
    1038                    ENDIF
    1039                    IF ( passive_scalar )  THEN
    1040                       sums_l(nzb,117,tn) = sums_l(nzb,117,tn) +                                    &
    1041                                            surf_lsm_h%ssws(m) * rmask(j,i,sr) ! w"s"
    1042                    ENDIF
    1043 #endif
    1044 
    1045                 ENDIF
    1046                 IF ( surf_usm_h%end_index(j,i) >= surf_usm_h%start_index(j,i) )  THEN
    1047                    m = surf_usm_h%start_index(j,i)
    1048                    !$ACC ATOMIC
    1049                    sums_l(nzb,12,tn) = sums_l(nzb,12,tn) +                                         &
    1050                                        momentumflux_output_conversion(nzb) *                       &
    1051                                        surf_usm_h%usws(m) * rmask(j,i,sr)                ! w"u"
    1052                    !$ACC ATOMIC
    1053                    sums_l(nzb,14,tn) = sums_l(nzb,14,tn) +                                         &
    1054                                        momentumflux_output_conversion(nzb) *                       &
    1055                                        surf_usm_h%vsws(m) * rmask(j,i,sr)                ! w"v"
    1056                    !$ACC ATOMIC
    1057                    sums_l(nzb,16,tn) = sums_l(nzb,16,tn) +                                         &
    1058                                        heatflux_output_conversion(nzb) *                           &
    1059                                        surf_usm_h%shf(m)  * rmask(j,i,sr)                ! w"pt"
     1048                   IF ( surf_usm_h(l)%end_index(j,i) >= surf_usm_h(l)%start_index(j,i) )  THEN
     1049                      m = surf_usm_h(l)%start_index(j,i)
     1050                      !$ACC ATOMIC
     1051                      sums_l(nzb,12,tn) = sums_l(nzb,12,tn) +                                         &
     1052                                          momentumflux_output_conversion(nzb) *                       &
     1053                                          surf_usm_h(l)%usws(m) * rmask(j,i,sr)                ! w"u"
     1054                      !$ACC ATOMIC
     1055                      sums_l(nzb,14,tn) = sums_l(nzb,14,tn) +                                         &
     1056                                          momentumflux_output_conversion(nzb) *                       &
     1057                                          surf_usm_h(l)%vsws(m) * rmask(j,i,sr)                ! w"v"
     1058                      !$ACC ATOMIC
     1059                      sums_l(nzb,16,tn) = sums_l(nzb,16,tn) +                                         &
     1060                                          heatflux_output_conversion(nzb) *                           &
     1061                                          surf_usm_h(l)%shf(m)  * rmask(j,i,sr)                ! w"pt"
    10601062#if 0
    1061                    sums_l(nzb,58,tn) = sums_l(nzb,58,tn) + 0.0_wp * rmask(j,i,sr)        ! u"pt"
    1062                    sums_l(nzb,61,tn) = sums_l(nzb,61,tn) + 0.0_wp * rmask(j,i,sr)        ! v"pt"
     1063                      sums_l(nzb,58,tn) = sums_l(nzb,58,tn) + 0.0_wp * rmask(j,i,sr)        ! u"pt"
     1064                      sums_l(nzb,61,tn) = sums_l(nzb,61,tn) + 0.0_wp * rmask(j,i,sr)        ! v"pt"
    10631065#endif
    10641066#ifndef _OPENACC
    1065                    IF ( ocean_mode )  THEN
    1066                       sums_l(nzb,65,tn) = sums_l(nzb,65,tn) +                                      &
    1067                                           surf_usm_h%sasws(m) * rmask(j,i,sr)            ! w"sa"
     1067                      IF ( ocean_mode )  THEN
     1068                         sums_l(nzb,65,tn) = sums_l(nzb,65,tn) +                                      &
     1069                                             surf_usm_h(l)%sasws(m) * rmask(j,i,sr)            ! w"sa"
     1070                      ENDIF
     1071                      IF ( humidity )  THEN
     1072                         sums_l(nzb,48,tn) = sums_l(nzb,48,tn) +                                      &
     1073                                             waterflux_output_conversion(nzb) *                       &
     1074                                             surf_usm_h(l)%qsws(m) * rmask(j,i,sr)             ! w"q" (w"qv")
     1075                         sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                    &
     1076                                             ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) *                      &
     1077                                             surf_usm_h(l)%shf(m) + 0.61_wp * pt(nzb,j,i) *              &
     1078                                             surf_usm_h(l)%qsws(m)  )                                    &
     1079                                             * heatflux_output_conversion(nzb)
     1080                         IF ( cloud_droplets )  THEN
     1081                            sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                 &
     1082                                                ( 1.0_wp + 0.61_wp * q(nzb,j,i) -                     &
     1083                                                 ql(nzb,j,i) ) * surf_usm_h(l)%shf(m) +                  &
     1084                                                 0.61_wp * pt(nzb,j,i) * surf_usm_h(l)%qsws(m) )         &
     1085                                                * heatflux_output_conversion(nzb)
     1086                         ENDIF
     1087                         IF ( bulk_cloud_model )  THEN
     1088!
     1089!--                         Formula does not work if ql(nzb) /= 0.0
     1090                            sums_l(nzb,51,tn) = sums_l(nzb,51,tn) +                                   &
     1091                                                waterflux_output_conversion(nzb) *                    &
     1092                                                surf_usm_h(l)%qsws(m) * rmask(j,i,sr)          ! w"q" (w"qv")
     1093                         ENDIF
     1094                      ENDIF
     1095                      IF ( passive_scalar )  THEN
     1096                         sums_l(nzb,117,tn) = sums_l(nzb,117,tn) +                                    &
     1097                                              surf_usm_h(l)%ssws(m) * rmask(j,i,sr)            ! w"s"
     1098                      ENDIF
     1099#endif
     1100
    10681101                   ENDIF
    1069                    IF ( humidity )  THEN
    1070                       sums_l(nzb,48,tn) = sums_l(nzb,48,tn) +                                      &
    1071                                           waterflux_output_conversion(nzb) *                       &
    1072                                           surf_usm_h%qsws(m) * rmask(j,i,sr)             ! w"q" (w"qv")
    1073                       sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                    &
    1074                                           ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) *                      &
    1075                                           surf_usm_h%shf(m) + 0.61_wp * pt(nzb,j,i) *              &
    1076                                           surf_usm_h%qsws(m)  )                                    &
    1077                                           * heatflux_output_conversion(nzb)
    1078                       IF ( cloud_droplets )  THEN
    1079                          sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (                                 &
    1080                                              ( 1.0_wp + 0.61_wp * q(nzb,j,i) -                     &
    1081                                               ql(nzb,j,i) ) * surf_usm_h%shf(m) +                  &
    1082                                               0.61_wp * pt(nzb,j,i) * surf_usm_h%qsws(m) )         &
    1083                                              * heatflux_output_conversion(nzb)
    1084                       ENDIF
    1085                       IF ( bulk_cloud_model )  THEN
    1086 !
    1087 !--                      Formula does not work if ql(nzb) /= 0.0
    1088                          sums_l(nzb,51,tn) = sums_l(nzb,51,tn) +                                   &
    1089                                              waterflux_output_conversion(nzb) *                    &
    1090                                              surf_usm_h%qsws(m) * rmask(j,i,sr)          ! w"q" (w"qv")
    1091                       ENDIF
    1092                    ENDIF
    1093                    IF ( passive_scalar )  THEN
    1094                       sums_l(nzb,117,tn) = sums_l(nzb,117,tn) +                                    &
    1095                                            surf_usm_h%ssws(m) * rmask(j,i,sr)            ! w"s"
    1096                    ENDIF
    1097 #endif
    1098 
    1099                 ENDIF
    1100 
     1102                ENDDO
    11011103             ENDIF
    11021104
     
    11071109                   sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_def_h(0)%ol(m) * rmask(j,i,sr) ! L
    11081110                ENDIF
    1109                 IF ( surf_lsm_h%end_index(j,i) >= surf_lsm_h%start_index(j,i) )  THEN
    1110                    m = surf_lsm_h%start_index(j,i)
    1111                    sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_lsm_h%ol(m)    * rmask(j,i,sr) ! L
    1112                 ENDIF
    1113                 IF ( surf_usm_h%end_index(j,i) >= surf_usm_h%start_index(j,i) )  THEN
    1114                    m = surf_usm_h%start_index(j,i)
    1115                    sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_usm_h%ol(m)    * rmask(j,i,sr) ! L
     1111                IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) )  THEN
     1112                   m = surf_lsm_h(0)%start_index(j,i)
     1113                   sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_lsm_h(0)%ol(m)    * rmask(j,i,sr) ! L
     1114                ENDIF
     1115                IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) )  THEN
     1116                   m = surf_usm_h(0)%start_index(j,i)
     1117                   sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_usm_h(0)%ol(m)    * rmask(j,i,sr) ! L
    11161118                ENDIF
    11171119             ENDIF
     
    11311133                                        surf_def_h(0)%rad_sw_out(m) * rmask(j,i,sr)
    11321134                ENDIF
    1133                 IF ( surf_lsm_h%end_index(j,i) >= surf_lsm_h%start_index(j,i) )  THEN
    1134                    m = surf_lsm_h%start_index(j,i)
     1135                IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) )  THEN
     1136                   m = surf_lsm_h(0)%start_index(j,i)
    11351137                   sums_l(nzb,99,tn)  = sums_l(nzb,99,tn)   +                                      &
    1136                                         surf_lsm_h%rad_net(m)    * rmask(j,i,sr)
     1138                                        surf_lsm_h(0)%rad_net(m)    * rmask(j,i,sr)
    11371139                   sums_l(nzb,100,tn) = sums_l(nzb,100,tn)  +                                      &
    1138                                         surf_lsm_h%rad_lw_in(m)  * rmask(j,i,sr)
     1140                                        surf_lsm_h(0)%rad_lw_in(m)  * rmask(j,i,sr)
    11391141                   sums_l(nzb,101,tn) = sums_l(nzb,101,tn)  +                                      &
    1140                                         surf_lsm_h%rad_lw_out(m) * rmask(j,i,sr)
     1142                                        surf_lsm_h(0)%rad_lw_out(m) * rmask(j,i,sr)
    11411143                   sums_l(nzb,102,tn) = sums_l(nzb,102,tn)  +                                      &
    1142                                         surf_lsm_h%rad_sw_in(m)  * rmask(j,i,sr)
     1144                                        surf_lsm_h(0)%rad_sw_in(m)  * rmask(j,i,sr)
    11431145                   sums_l(nzb,103,tn) = sums_l(nzb,103,tn)  +                                      &
    1144                                         surf_lsm_h%rad_sw_out(m) * rmask(j,i,sr)
    1145                 ENDIF
    1146                 IF ( surf_usm_h%end_index(j,i) >= surf_usm_h%start_index(j,i) )  THEN
    1147                    m = surf_usm_h%start_index(j,i)
     1146                                        surf_lsm_h(0)%rad_sw_out(m) * rmask(j,i,sr)
     1147                ENDIF
     1148                IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) )  THEN
     1149                   m = surf_usm_h(0)%start_index(j,i)
    11481150                   sums_l(nzb,99,tn)  = sums_l(nzb,99,tn)   +                                      &
    1149                                         surf_usm_h%rad_net(m)    * rmask(j,i,sr)
     1151                                        surf_usm_h(0)%rad_net(m)    * rmask(j,i,sr)
    11501152                   sums_l(nzb,100,tn) = sums_l(nzb,100,tn)  +                                      &
    1151                                         surf_usm_h%rad_lw_in(m)  * rmask(j,i,sr)
     1153                                        surf_usm_h(0)%rad_lw_in(m)  * rmask(j,i,sr)
    11521154                   sums_l(nzb,101,tn) = sums_l(nzb,101,tn)  +                                      &
    1153                                         surf_usm_h%rad_lw_out(m) * rmask(j,i,sr)
     1155                                        surf_usm_h(0)%rad_lw_out(m) * rmask(j,i,sr)
    11541156                   sums_l(nzb,102,tn) = sums_l(nzb,102,tn)  +                                      &
    1155                                         surf_usm_h%rad_sw_in(m)  * rmask(j,i,sr)
     1157                                        surf_usm_h(0)%rad_sw_in(m)  * rmask(j,i,sr)
    11561158                   sums_l(nzb,103,tn) = sums_l(nzb,103,tn)  +                                      &
    1157                                         surf_usm_h%rad_sw_out(m) * rmask(j,i,sr)
     1159                                        surf_usm_h(0)%rad_sw_out(m) * rmask(j,i,sr)
    11581160                ENDIF
    11591161
     
    11721174                                           surf_def_h(0)%rrtm_asdir(m,0) * rmask(j,i,sr)
    11731175                   ENDIF
    1174                    IF ( surf_lsm_h%end_index(j,i) >= surf_lsm_h%start_index(j,i) )  THEN
    1175                       m = surf_lsm_h%start_index(j,i)
     1176                   IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) )  THEN
     1177                      m = surf_lsm_h(0)%start_index(j,i)
    11761178                      sums_l(nzb,108,tn)  = sums_l(nzb,108,tn)  +                                  &
    1177                                             SUM( surf_lsm_h%frac(m,:) *                            &
    1178                                                  surf_lsm_h%rrtm_aldif(m,:) ) * rmask(j,i,sr)
     1179                                            SUM( surf_lsm_h(0)%frac(m,:) *                            &
     1180                                                 surf_lsm_h(0)%rrtm_aldif(m,:) ) * rmask(j,i,sr)
    11791181                      sums_l(nzb,109,tn) = sums_l(nzb,109,tn)  +                                   &
    1180                                            SUM( surf_lsm_h%frac(m,:) *                             &
    1181                                                 surf_lsm_h%rrtm_aldir(m,:) ) * rmask(j,i,sr)
     1182                                           SUM( surf_lsm_h(0)%frac(m,:) *                             &
     1183                                                surf_lsm_h(0)%rrtm_aldir(m,:) ) * rmask(j,i,sr)
    11821184                      sums_l(nzb,110,tn) = sums_l(nzb,110,tn)  +                                   &
    1183                                            SUM( surf_lsm_h%frac(m,:) *                             &
    1184                                                 surf_lsm_h%rrtm_asdif(m,:) ) * rmask(j,i,sr)
     1185                                           SUM( surf_lsm_h(0)%frac(m,:) *                             &
     1186                                                surf_lsm_h(0)%rrtm_asdif(m,:) ) * rmask(j,i,sr)
    11851187                      sums_l(nzb,111,tn) = sums_l(nzb,111,tn)  +                                   &
    1186                                            SUM( surf_lsm_h%frac(m,:) *                             &
    1187                                                 surf_lsm_h%rrtm_asdir(m,:) ) * rmask(j,i,sr)
     1188                                           SUM( surf_lsm_h(0)%frac(m,:) *                             &
     1189                                                surf_lsm_h(0)%rrtm_asdir(m,:) ) * rmask(j,i,sr)
    11881190                   ENDIF
    1189                    IF ( surf_usm_h%end_index(j,i) >= surf_usm_h%start_index(j,i) )  THEN
    1190                       m = surf_usm_h%start_index(j,i)
     1191                   IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) )  THEN
     1192                      m = surf_usm_h(0)%start_index(j,i)
    11911193                      sums_l(nzb,108,tn)  = sums_l(nzb,108,tn)  +                                  &
    1192                                             SUM( surf_usm_h%frac(m,:) *                            &
    1193                                                  surf_usm_h%rrtm_aldif(m,:) ) * rmask(j,i,sr)
     1194                                            SUM( surf_usm_h(0)%frac(m,:) *                            &
     1195                                                 surf_usm_h(0)%rrtm_aldif(m,:) ) * rmask(j,i,sr)
    11941196                      sums_l(nzb,109,tn) = sums_l(nzb,109,tn)  +                                   &
    1195                                            SUM( surf_usm_h%frac(m,:) *                             &
    1196                                                 surf_usm_h%rrtm_aldir(m,:) ) * rmask(j,i,sr)
     1197                                           SUM( surf_usm_h(0)%frac(m,:) *                             &
     1198                                                surf_usm_h(0)%rrtm_aldir(m,:) ) * rmask(j,i,sr)
    11971199                      sums_l(nzb,110,tn) = sums_l(nzb,110,tn)  +                                   &
    1198                                            SUM( surf_usm_h%frac(m,:) *                             &
    1199                                                 surf_usm_h%rrtm_asdif(m,:) ) * rmask(j,i,sr)
     1200                                           SUM( surf_usm_h(0)%frac(m,:) *                             &
     1201                                                surf_usm_h(0)%rrtm_asdif(m,:) ) * rmask(j,i,sr)
    12001202                      sums_l(nzb,111,tn) = sums_l(nzb,111,tn)  +                                   &
    1201                                            SUM( surf_usm_h%frac(m,:) *                             &
    1202                                                 surf_usm_h%rrtm_asdir(m,:) ) * rmask(j,i,sr)
     1203                                           SUM( surf_usm_h(0)%frac(m,:) *                             &
     1204                                                surf_usm_h(0)%rrtm_asdir(m,:) ) * rmask(j,i,sr)
    12031205                   ENDIF
    12041206
     
    14051407          !$ tn = omp_get_thread_num()
    14061408          !$OMP DO
    1407           DO  m = 1, surf_lsm_h%ns
    1408              i = surf_lsm_h%i(m)
    1409              j = surf_lsm_h%j(m)
     1409          DO  m = 1, surf_lsm_h(0)%ns
     1410             i = surf_lsm_h(0)%i(m)
     1411             j = surf_lsm_h(0)%j(m)
    14101412
    14111413             IF ( i >= nxl  .AND.  i <= nxr  .AND.  j >= nys  .AND.  j <= nyn )  THEN
    1412                 sums_l(nzb,93,tn)  = sums_l(nzb,93,tn) + surf_lsm_h%ghf(m)       * rmask(j,i,sr)
    1413                 sums_l(nzb,94,tn)  = sums_l(nzb,94,tn) + surf_lsm_h%qsws_liq(m)  * rmask(j,i,sr)
    1414                 sums_l(nzb,95,tn)  = sums_l(nzb,95,tn) + surf_lsm_h%qsws_soil(m) * rmask(j,i,sr)
    1415                 sums_l(nzb,96,tn)  = sums_l(nzb,96,tn) + surf_lsm_h%qsws_veg(m)  * rmask(j,i,sr)
    1416                 sums_l(nzb,97,tn)  = sums_l(nzb,97,tn) + surf_lsm_h%r_a(m)       * rmask(j,i,sr)
    1417                 sums_l(nzb,98,tn)  = sums_l(nzb,98,tn) + surf_lsm_h%r_s(m)       * rmask(j,i,sr)
     1414                sums_l(nzb,93,tn)  = sums_l(nzb,93,tn) + surf_lsm_h(0)%ghf(m)       * rmask(j,i,sr)
     1415                sums_l(nzb,94,tn)  = sums_l(nzb,94,tn) + surf_lsm_h(0)%qsws_liq(m)  * rmask(j,i,sr)
     1416                sums_l(nzb,95,tn)  = sums_l(nzb,95,tn) + surf_lsm_h(0)%qsws_soil(m) * rmask(j,i,sr)
     1417                sums_l(nzb,96,tn)  = sums_l(nzb,96,tn) + surf_lsm_h(0)%qsws_veg(m)  * rmask(j,i,sr)
     1418                sums_l(nzb,97,tn)  = sums_l(nzb,97,tn) + surf_lsm_h(0)%r_a(m)       * rmask(j,i,sr)
     1419                sums_l(nzb,98,tn)  = sums_l(nzb,98,tn) + surf_lsm_h(0)%r_s(m)       * rmask(j,i,sr)
    14181420             ENDIF
    14191421          ENDDO
     
    14241426          !$ tn = omp_get_thread_num()
    14251427          !$OMP DO
    1426           DO  m = 1, surf_lsm_h%ns
    1427 
    1428              i = surf_lsm_h%i(m)
    1429              j = surf_lsm_h%j(m)
     1428          DO  m = 1, surf_lsm_h(0)%ns
     1429
     1430             i = surf_lsm_h(0)%i(m)
     1431             j = surf_lsm_h(0)%j(m)
    14301432
    14311433             IF ( i >= nxl  .AND.  i <= nxr  .AND.  j >= nys  .AND.  j <= nyn )  THEN
    14321434
    14331435                DO  k = nzb_soil, nzt_soil
    1434                    sums_l(k,89,tn)  = sums_l(k,89,tn)  + t_soil_h%var_2d(k,m) * rmask(j,i,sr)
    1435                    sums_l(k,91,tn)  = sums_l(k,91,tn)  + m_soil_h%var_2d(k,m) * rmask(j,i,sr)
     1436                   sums_l(k,89,tn)  = sums_l(k,89,tn)  + t_soil_h(0)%var_2d(k,m) * rmask(j,i,sr)
     1437                   sums_l(k,91,tn)  = sums_l(k,91,tn)  + m_soil_h(0)%var_2d(k,m) * rmask(j,i,sr)
    14361438                ENDDO
    14371439             ENDIF
Note: See TracChangeset for help on using the changeset viewer.