Changeset 4703 for palm/trunk/SOURCE


Ignore:
Timestamp:
Sep 28, 2020 9:21:45 AM (4 years ago)
Author:
suehring
Message:

Revise profile and timeseries averaging of land-surface quantities

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

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

    r4672 r4703  
    2424! -----------------
    2525! $Id$
     26! Revise averaging of land-surface quantities
     27!
     28! 4672 2020-09-09 21:27:32Z pavelkrc
    2629! OpenACC bugfix
    2730!
     
    14141417             j = surf_lsm_h(0)%j(m)
    14151418
    1416              IF ( i >= nxl  .AND.  i <= nxr  .AND.  j >= nys  .AND.  j <= nyn )  THEN
    1417                 sums_l(nzb,93,tn)  = sums_l(nzb,93,tn) + surf_lsm_h(0)%ghf(m)       * rmask(j,i,sr)
    1418                 sums_l(nzb,94,tn)  = sums_l(nzb,94,tn) + surf_lsm_h(0)%qsws_liq(m)  * rmask(j,i,sr)
    1419                 sums_l(nzb,95,tn)  = sums_l(nzb,95,tn) + surf_lsm_h(0)%qsws_soil(m) * rmask(j,i,sr)
    1420                 sums_l(nzb,96,tn)  = sums_l(nzb,96,tn) + surf_lsm_h(0)%qsws_veg(m)  * rmask(j,i,sr)
    1421                 sums_l(nzb,97,tn)  = sums_l(nzb,97,tn) + surf_lsm_h(0)%r_a(m)       * rmask(j,i,sr)
    1422                 sums_l(nzb,98,tn)  = sums_l(nzb,98,tn) + surf_lsm_h(0)%r_s(m)       * rmask(j,i,sr)
    1423              ENDIF
     1419             sums_l(nzb,93,tn)  = sums_l(nzb,93,tn) + surf_lsm_h(0)%ghf(m)       * rmask(j,i,sr)
     1420             sums_l(nzb,94,tn)  = sums_l(nzb,94,tn) + surf_lsm_h(0)%qsws_liq(m)  * rmask(j,i,sr)
     1421             sums_l(nzb,95,tn)  = sums_l(nzb,95,tn) + surf_lsm_h(0)%qsws_soil(m) * rmask(j,i,sr)
     1422             sums_l(nzb,96,tn)  = sums_l(nzb,96,tn) + surf_lsm_h(0)%qsws_veg(m)  * rmask(j,i,sr)
     1423             sums_l(nzb,97,tn)  = sums_l(nzb,97,tn) + surf_lsm_h(0)%r_a(m)       * rmask(j,i,sr)
     1424             sums_l(nzb,98,tn)  = sums_l(nzb,98,tn) + surf_lsm_h(0)%r_s(m)       * rmask(j,i,sr)
    14241425          ENDDO
    14251426          !$OMP END PARALLEL
     
    14331434             i = surf_lsm_h(0)%i(m)
    14341435             j = surf_lsm_h(0)%j(m)
    1435 
    1436              IF ( i >= nxl  .AND.  i <= nxr  .AND.  j >= nys  .AND.  j <= nyn )  THEN
    1437 
    1438                 DO  k = nzb_soil, nzt_soil
    1439                    sums_l(k,89,tn)  = sums_l(k,89,tn)  + t_soil_h(0)%var_2d(k,m) * rmask(j,i,sr)
    1440                    sums_l(k,91,tn)  = sums_l(k,91,tn)  + m_soil_h(0)%var_2d(k,m) * rmask(j,i,sr)
    1441                 ENDDO
    1442              ENDIF
     1436             DO  k = nzb_soil, nzt_soil
     1437                sums_l(k,89,tn)  = sums_l(k,89,tn)  + t_soil_h(0)%var_2d(k,m) * rmask(j,i,sr)
     1438                sums_l(k,91,tn)  = sums_l(k,91,tn)  + m_soil_h(0)%var_2d(k,m) * rmask(j,i,sr)
     1439             ENDDO
    14431440          ENDDO
    14441441          !$OMP END PARALLEL
     
    18061803          sums(k,55:63)         = sums(k,55:63)         / ngp_2dh(sr)
    18071804          sums(k,81:88)         = sums(k,81:88)         / ngp_2dh(sr)
    1808           sums(k,89:112)        = sums(k,89:112)        / ngp_2dh(sr)
     1805
     1806          IF ( land_surface  .AND.  surf_lsm_h(0)%ns_tot > 0 )  THEN
     1807             sums(k,89:98) = sums(k,89:98)              / surf_lsm_h(0)%ns_tot
     1808          ENDIF
     1809
     1810          sums(k,99:112)        = sums(k,99:112)        / ngp_2dh(sr)
    18091811          sums(k,114)           = sums(k,114)           / ngp_2dh(sr)
    18101812          sums(k,117)           = sums(k,117)           / ngp_2dh(sr)
  • palm/trunk/SOURCE/surface_mod.f90

    r4694 r4703  
    2525! -----------------
    2626! $Id$
     27! Calculate and store total number of surfaces within the model domain.
     28!
     29! 4694 2020-09-23 15:09:19Z pavelkrc
    2730! Fix reading of surface data from MPI restart file
    2831!
     
    227230    TYPE surf_type
    228231
    229        INTEGER(iwp) ::  ioff  !< offset value in x-direction, used to determine index of surface element
    230        INTEGER(iwp) ::  joff  !< offset value in y-direction, used to determine index of surface element
    231        INTEGER(iwp) ::  koff  !< offset value in z-direction, used to determine index of surface element
    232        INTEGER(iwp) ::  ns    !< number of surface elements on the PE
     232       INTEGER(iwp) ::  ioff        !< offset value in x-direction, used to determine index of surface element
     233       INTEGER(iwp) ::  joff        !< offset value in y-direction, used to determine index of surface element
     234       INTEGER(iwp) ::  koff        !< offset value in z-direction, used to determine index of surface element
     235       INTEGER(iwp) ::  ns          !< number of surface elements on the PE
     236       INTEGER(iwp) ::  ns_tot = 0  !< number of surface elements within the entire model domain
    233237
    234238       INTEGER(iwp), DIMENSION(:), ALLOCATABLE ::  i  !< x-index linking to the PALM 3D-grid
     
    11731177    ENDDO
    11741178!
    1175 !-- Set the flag for the existence of vertical urban/land surfaces
     1179!-- Set the flag for the existence of vertical urban/land surfaces. Therefore, sum-up the number of
     1180!-- all natural and urban-type vertical surfaces and check.
    11761181    num_surf_v_l = 0
    11771182    DO  l = 0, 3
     
    11861191    IF ( num_surf_v > 0 )  vertical_surfaces_exist = .TRUE.
    11871192
     1193!
     1194!-- Calculate the total number of surfaces in the entire model domain of a type.
     1195!-- Horizontal walls.
     1196    DO  l = 0, 1
     1197#if defined( __parallel )
     1198       CALL MPI_ALLREDUCE( surf_def_h(l)%ns, surf_def_h(l)%ns_tot, 1, MPI_INTEGER, MPI_SUM, comm2d, ierr)
     1199       CALL MPI_ALLREDUCE( surf_lsm_h(l)%ns, surf_lsm_h(l)%ns_tot, 1, MPI_INTEGER, MPI_SUM, comm2d, ierr)
     1200       CALL MPI_ALLREDUCE( surf_usm_h(l)%ns, surf_usm_h(l)%ns_tot, 1, MPI_INTEGER, MPI_SUM, comm2d, ierr)
     1201#else
     1202       surf_def_h(l)%ns_tot = surf_def_h(l)%ns
     1203       surf_lsm_h(l)%ns_tot = surf_lsm_h(l)%ns
     1204       surf_usm_h(l)%ns_tot = surf_usm_h(l)%ns
     1205#endif
     1206    ENDDO
     1207!
     1208!-- Vertical walls.
     1209    DO  l = 0, 3
     1210#if defined( __parallel )
     1211       CALL MPI_ALLREDUCE( surf_def_v(l)%ns, surf_def_v(l)%ns_tot, 1, MPI_INTEGER, MPI_SUM, comm2d, ierr)
     1212       CALL MPI_ALLREDUCE( surf_lsm_v(l)%ns, surf_lsm_v(l)%ns_tot, 1, MPI_INTEGER, MPI_SUM, comm2d, ierr)
     1213       CALL MPI_ALLREDUCE( surf_usm_v(l)%ns, surf_usm_v(l)%ns_tot, 1, MPI_INTEGER, MPI_SUM, comm2d, ierr)
     1214#else
     1215       surf_def_v(l)%ns_tot = surf_def_v(l)%ns
     1216       surf_lsm_v(l)%ns_tot = surf_lsm_v(l)%ns
     1217       surf_usm_v(l)%ns_tot = surf_usm_v(l)%ns
     1218#endif
     1219    ENDDO
    11881220
    11891221 END SUBROUTINE init_surface_arrays
Note: See TracChangeset for help on using the changeset viewer.