Ignore:
Timestamp:
Oct 4, 2017 8:26:59 AM (4 years ago)
Author:
raasch
Message:

upper bounds of cross section and 3d output changed from nx+1,ny+1 to nx,ny; no output if redundant ghost layer data to NetCDF files

File:
1 edited

Legend:

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

    r2292 r2512  
    2525! -----------------
    2626! $Id$
     27! upper bounds of cross section output changed from nx+1,ny+1 to nx,ny
     28! no output of ghost layer data
     29!
     30! 2292 2017-06-20 09:51:42Z schwenkel
    2731! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
    2832! includes two more prognostic equations for cloud drop concentration (nc) 
     
    165169! Description:
    166170! ------------
    167 !> Data output of horizontal cross-sections in netCDF format or binary format
    168 !> compatible to old graphic software iso2d.
     171!> Data output of cross-sections in netCDF format or binary format
     172!> to be later converted to NetCDF by helper routine combine_plot_fields.
    169173!> Attention: The position of the sectional planes is still not always computed
    170174!> ---------  correctly. (zu is used always)!
     
    201205       
    202206    USE indices,                                                               &
    203         ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg,       &
    204                nz, nzb, nzt
     207        ONLY:  nbgp, nx, nxl, nxr, ny, nyn, nys, nz, nzb, nzt
    205208               
    206209    USE kinds
     
    271274    REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d            !<
    272275    REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  local_2d_l          !<
    273     REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  tmp_2d              !< temporary field used to exchange surface-related quantities
    274276
    275277    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf            !<
     
    303305       CASE ( 'xy' )
    304306          s_ind = 1
    305           ALLOCATE( level_z(nzb:nzt+1), local_2d(nxlg:nxrg,nysg:nyng) )
     307          ALLOCATE( level_z(nzb:nzt+1), local_2d(nxl:nxr,nys:nyn) )
    306308
    307309          IF ( netcdf_data_format > 4 )  THEN
     
    311313             ENDDO
    312314             ns = ns - 1
    313              ALLOCATE( local_2d_sections(nxlg:nxrg,nysg:nyng,1:ns) )
     315             ALLOCATE( local_2d_sections(nxl:nxr,nys:nyn,1:ns) )
    314316             local_2d_sections = 0.0_wp
    315317          ENDIF
     
    325327             IF ( myid == 0 )  THEN
    326328#if defined( __parallel )
    327                 ALLOCATE( total_2d(-nbgp:nx+nbgp,-nbgp:ny+nbgp) )
     329                ALLOCATE( total_2d(0:nx,0:ny) )
    328330#endif
    329331             ENDIF
     
    332334       CASE ( 'xz' )
    333335          s_ind = 2
    334           ALLOCATE( local_2d(nxlg:nxrg,nzb:nzt+1) )
     336          ALLOCATE( local_2d(nxl:nxr,nzb:nzt+1) )
    335337
    336338          IF ( netcdf_data_format > 4 )  THEN
     
    340342             ENDDO
    341343             ns = ns - 1
    342              ALLOCATE( local_2d_sections(nxlg:nxrg,1:ns,nzb:nzt+1) )
    343              ALLOCATE( local_2d_sections_l(nxlg:nxrg,1:ns,nzb:nzt+1) )
     344             ALLOCATE( local_2d_sections(nxl:nxr,1:ns,nzb:nzt+1) )
     345             ALLOCATE( local_2d_sections_l(nxl:nxr,1:ns,nzb:nzt+1) )
    344346             local_2d_sections = 0.0_wp; local_2d_sections_l = 0.0_wp
    345347          ENDIF
     
    356358             IF ( myid == 0 )  THEN
    357359#if defined( __parallel )
    358                 ALLOCATE( total_2d(-nbgp:nx+nbgp,nzb:nzt+1) )
     360                ALLOCATE( total_2d(0:nx,nzb:nzt+1) )
    359361#endif
    360362             ENDIF
     
    363365       CASE ( 'yz' )
    364366          s_ind = 3
    365           ALLOCATE( local_2d(nysg:nyng,nzb:nzt+1) )
     367          ALLOCATE( local_2d(nys:nyn,nzb:nzt+1) )
    366368
    367369          IF ( netcdf_data_format > 4 )  THEN
     
    371373             ENDDO
    372374             ns = ns - 1
    373              ALLOCATE( local_2d_sections(1:ns,nysg:nyng,nzb:nzt+1) )
    374              ALLOCATE( local_2d_sections_l(1:ns,nysg:nyng,nzb:nzt+1) )
     375             ALLOCATE( local_2d_sections(1:ns,nys:nyn,nzb:nzt+1) )
     376             ALLOCATE( local_2d_sections_l(1:ns,nys:nyn,nzb:nzt+1) )
    375377             local_2d_sections = 0.0_wp; local_2d_sections_l = 0.0_wp
    376378          ENDIF
     
    387389             IF ( myid == 0 )  THEN
    388390#if defined( __parallel )
    389                 ALLOCATE( total_2d(-nbgp:ny+nbgp,nzb:nzt+1) )
     391                ALLOCATE( total_2d(0:ny,nzb:nzt+1) )
    390392#endif
    391393             ENDIF
     
    434436!
    435437!-- Allocate a temporary array for resorting (kji -> ijk).
    436     ALLOCATE( local_pf(nxlg:nxrg,nysg:nyng,nzb:nzt+1) )
     438    ALLOCATE( local_pf(nxl:nxr,nys:nyn,nzb:nzt+1) )
    437439    local_pf = 0.0
    438 !
    439 !-- Allocate temporary array used for exchanging ghoist points of surface-data
    440     ALLOCATE( tmp_2d(nysg:nyng,nxlg:nxrg) )
    441     tmp_2d = 0.0
    442440
    443441!
     
    481479             CASE ( 'lwp*_xy' )        ! 2d-array
    482480                IF ( av == 0 )  THEN
    483                    DO  i = nxlg, nxrg
    484                       DO  j = nysg, nyng
     481                   DO  i = nxl, nxr
     482                      DO  j = nys, nyn
    485483                         local_pf(i,j,nzb+1) = SUM( ql(nzb:nzt,j,i) *          &
    486484                                                    dzw(1:nzt+1) )
     
    488486                   ENDDO
    489487                ELSE
    490                    DO  i = nxlg, nxrg
    491                       DO  j = nysg, nyng
     488                   DO  i = nxl, nxr
     489                      DO  j = nys, nyn
    492490                         local_pf(i,j,nzb+1) = lwp_av(j,i)
    493491                      ENDDO
     
    519517                      i = surf_def_h(0)%i(m)
    520518                      j = surf_def_h(0)%j(m)
    521                       tmp_2d(j,i) = surf_def_h(0)%ol(m)
     519                      local_pf(i,j,nzb+1) = surf_def_h(0)%ol(m)
    522520                   ENDDO
    523521                   DO  m = 1, surf_lsm_h%ns
    524522                      i = surf_lsm_h%i(m)
    525523                      j = surf_lsm_h%j(m)
    526                       tmp_2d(j,i) = surf_lsm_h%ol(m)
     524                      local_pf(i,j,nzb+1) = surf_lsm_h%ol(m)
    527525                   ENDDO
    528526                   DO  m = 1, surf_usm_h%ns
    529527                      i = surf_usm_h%i(m)
    530528                      j = surf_usm_h%j(m)
    531                       tmp_2d(j,i) = surf_usm_h%ol(m)
    532                    ENDDO
    533 
    534                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    535 
    536                    DO  i = nxlg, nxrg
    537                       DO  j = nysg, nyng
    538                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    539                       ENDDO
    540                    ENDDO
    541 
    542                 ELSE
    543                    DO  i = nxlg, nxrg
    544                       DO  j = nysg, nyng
     529                      local_pf(i,j,nzb+1) = surf_usm_h%ol(m)
     530                   ENDDO
     531                ELSE
     532                   DO  i = nxl, nxr
     533                      DO  j = nys, nyn
    545534                         local_pf(i,j,nzb+1) = ol_av(j,i)
    546535                      ENDDO
     
    565554                   IF ( simulated_time >= particle_advection_start )  THEN
    566555                      tend = prt_count
    567                       CALL exchange_horiz( tend, nbgp )
     556!                      CALL exchange_horiz( tend, nbgp )
    568557                   ELSE
    569558                      tend = 0.0_wp
    570559                   ENDIF
    571                    DO  i = nxlg, nxrg
    572                       DO  j = nysg, nyng
     560                   DO  i = nxl, nxr
     561                      DO  j = nys, nyn
    573562                         DO  k = nzb, nzt+1
    574563                            local_pf(i,j,k) = tend(k,j,i)
     
    578567                   resorted = .TRUE.
    579568                ELSE
    580                    CALL exchange_horiz( pc_av, nbgp )
     569!                   CALL exchange_horiz( pc_av, nbgp )
    581570                   to_be_resorted => pc_av
    582571                ENDIF
     
    610599                         ENDDO
    611600                      ENDDO
    612                       CALL exchange_horiz( tend, nbgp )
     601!                      CALL exchange_horiz( tend, nbgp )
    613602                   ELSE
    614603                      tend = 0.0_wp
    615604                   ENDIF
    616                    DO  i = nxlg, nxrg
    617                       DO  j = nysg, nyng
     605                   DO  i = nxl, nxr
     606                      DO  j = nys, nyn
    618607                         DO  k = nzb, nzt+1
    619608                            local_pf(i,j,k) = tend(k,j,i)
     
    623612                   resorted = .TRUE.
    624613                ELSE
    625                    CALL exchange_horiz( pr_av, nbgp )
     614!                   CALL exchange_horiz( pr_av, nbgp )
    626615                   to_be_resorted => pr_av
    627616                ENDIF
    628617
    629618             CASE ( 'pra*_xy' )        ! 2d-array / integral quantity => no av
    630                 CALL exchange_horiz_2d( precipitation_amount )
    631                    DO  i = nxlg, nxrg
    632                       DO  j = nysg, nyng
     619!                CALL exchange_horiz_2d( precipitation_amount )
     620                   DO  i = nxl, nxr
     621                      DO  j = nys, nyn
    633622                      local_pf(i,j,nzb+1) =  precipitation_amount(j,i)
    634623                   ENDDO
     
    641630             CASE ( 'prr*_xy' )        ! 2d-array
    642631                IF ( av == 0 )  THEN
    643                    CALL exchange_horiz_2d( prr(nzb+1,:,:) )
    644                    DO  i = nxlg, nxrg
    645                       DO  j = nysg, nyng
     632!                   CALL exchange_horiz_2d( prr(nzb+1,:,:) )
     633                   DO  i = nxl, nxr
     634                      DO  j = nys, nyn
    646635                         local_pf(i,j,nzb+1) = prr(nzb+1,j,i) * hyrho(nzb+1)
    647636                      ENDDO
    648637                   ENDDO
    649638                ELSE
    650                    CALL exchange_horiz_2d( prr_av(nzb+1,:,:) )
    651                    DO  i = nxlg, nxrg
    652                       DO  j = nysg, nyng
     639!                   CALL exchange_horiz_2d( prr_av(nzb+1,:,:) )
     640                   DO  i = nxl, nxr
     641                      DO  j = nys, nyn
    653642                         local_pf(i,j,nzb+1) = prr_av(nzb+1,j,i) * hyrho(nzb+1)
    654643                      ENDDO
     
    661650             CASE ( 'prr_xy', 'prr_xz', 'prr_yz' )
    662651                IF ( av == 0 )  THEN
    663                    CALL exchange_horiz( prr, nbgp )
    664                    DO  i = nxlg, nxrg
    665                       DO  j = nysg, nyng
     652!                   CALL exchange_horiz( prr, nbgp )
     653                   DO  i = nxl, nxr
     654                      DO  j = nys, nyn
    666655                         DO  k = nzb, nzt+1
    667656                            local_pf(i,j,k) = prr(k,j,i) * hyrho(nzb+1)
     
    670659                   ENDDO
    671660                ELSE
    672                    CALL exchange_horiz( prr_av, nbgp )
    673                    DO  i = nxlg, nxrg
    674                       DO  j = nysg, nyng
     661!                   CALL exchange_horiz( prr_av, nbgp )
     662                   DO  i = nxl, nxr
     663                      DO  j = nys, nyn
    675664                         DO  k = nzb, nzt+1
    676665                            local_pf(i,j,k) = prr_av(k,j,i) * hyrho(nzb+1)
     
    687676                      to_be_resorted => pt
    688677                   ELSE
    689                    DO  i = nxlg, nxrg
    690                       DO  j = nysg, nyng
     678                   DO  i = nxl, nxr
     679                      DO  j = nys, nyn
    691680                            DO  k = nzb, nzt+1
    692681                               local_pf(i,j,k) = pt(k,j,i) + l_d_cp *          &
     
    762751                         ENDDO
    763752                      ENDDO
    764                       CALL exchange_horiz( tend, nbgp )
     753!                      CALL exchange_horiz( tend, nbgp )
    765754                   ELSE
    766755                      tend = 0.0_wp
    767756                   ENDIF
    768                    DO  i = nxlg, nxrg
    769                       DO  j = nysg, nyng
     757                   DO  i = nxl, nxr
     758                      DO  j = nys, nyn
    770759                         DO  k = nzb, nzt+1
    771760                            local_pf(i,j,k) = tend(k,j,i)
     
    775764                   resorted = .TRUE.
    776765                ELSE
    777                    CALL exchange_horiz( ql_vp_av, nbgp )
     766!                   CALL exchange_horiz( ql_vp_av, nbgp )
    778767                   to_be_resorted => ql_vp
    779768                ENDIF
     
    793782                      i = surf_def_h(0)%i(m)
    794783                      j = surf_def_h(0)%j(m)
    795                       tmp_2d(j,i) = surf_def_h(0)%qsws(m)
     784                      local_pf(i,j,nzb+1) = surf_def_h(0)%qsws(m)
    796785                   ENDDO
    797786                   DO  m = 1, surf_lsm_h%ns
    798787                      i = surf_lsm_h%i(m)
    799788                      j = surf_lsm_h%j(m)
    800                       tmp_2d(j,i) = surf_lsm_h%qsws(m)
     789                      local_pf(i,j,nzb+1) = surf_lsm_h%qsws(m)
    801790                   ENDDO
    802791                   DO  m = 1, surf_usm_h%ns
    803792                      i = surf_usm_h%i(m)
    804793                      j = surf_usm_h%j(m)
    805                       tmp_2d(j,i) = surf_usm_h%qsws(m)
    806                    ENDDO
    807 
    808                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    809 
    810                    DO  i = nxlg, nxrg
    811                       DO  j = nysg, nyng
    812                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    813                       ENDDO
    814                    ENDDO
    815                 ELSE
    816                    DO  i = nxlg, nxrg
    817                       DO  j = nysg, nyng
     794                      local_pf(i,j,nzb+1) = surf_usm_h%qsws(m)
     795                   ENDDO
     796                ELSE
     797                   DO  i = nxl, nxr
     798                      DO  j = nys, nyn
    818799                         local_pf(i,j,nzb+1) =  qsws_av(j,i)
    819800                      ENDDO
     
    826807             CASE ( 'qv_xy', 'qv_xz', 'qv_yz' )
    827808                IF ( av == 0 )  THEN
    828                    DO  i = nxlg, nxrg
    829                       DO  j = nysg, nyng
     809                   DO  i = nxl, nxr
     810                      DO  j = nys, nyn
    830811                         DO  k = nzb, nzt+1
    831812                            local_pf(i,j,k) = q(k,j,i) - ql(k,j,i)
     
    867848                      i = surf_def_h(0)%i(m)
    868849                      j = surf_def_h(0)%j(m)
    869                       tmp_2d(j,i) = surf_def_h(0)%shf(m)
     850                      local_pf(i,j,nzb+1) = surf_def_h(0)%shf(m)
    870851                   ENDDO
    871852                   DO  m = 1, surf_lsm_h%ns
    872853                      i = surf_lsm_h%i(m)
    873854                      j = surf_lsm_h%j(m)
    874                       tmp_2d(j,i) = surf_lsm_h%shf(m)
     855                      local_pf(i,j,nzb+1) = surf_lsm_h%shf(m)
    875856                   ENDDO
    876857                   DO  m = 1, surf_usm_h%ns
    877858                      i = surf_usm_h%i(m)
    878859                      j = surf_usm_h%j(m)
    879                       tmp_2d(j,i) = surf_usm_h%shf(m)
    880                    ENDDO
    881 
    882                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    883 
    884                    DO  i = nxlg, nxrg
    885                       DO  j = nysg, nyng
    886                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    887                       ENDDO
    888                    ENDDO
    889                 ELSE
    890                    DO  i = nxlg, nxrg
    891                       DO  j = nysg, nyng
     860                      local_pf(i,j,nzb+1) = surf_usm_h%shf(m)
     861                   ENDDO
     862                ELSE
     863                   DO  i = nxl, nxr
     864                      DO  j = nys, nyn
    892865                         local_pf(i,j,nzb+1) =  shf_av(j,i)
    893866                      ENDDO
     
    903876                      i = surf_def_h(0)%i(m)
    904877                      j = surf_def_h(0)%j(m)
    905                       tmp_2d(j,i) = surf_def_h(0)%ssws(m)
     878                      local_pf(i,j,nzb+1) = surf_def_h(0)%ssws(m)
    906879                   ENDDO
    907880                   DO  m = 1, surf_lsm_h%ns
    908881                      i = surf_lsm_h%i(m)
    909882                      j = surf_lsm_h%j(m)
    910                       tmp_2d(j,i) = surf_lsm_h%ssws(m)
     883                      local_pf(i,j,nzb+1) = surf_lsm_h%ssws(m)
    911884                   ENDDO
    912885                   DO  m = 1, surf_usm_h%ns
    913886                      i = surf_usm_h%i(m)
    914887                      j = surf_usm_h%j(m)
    915                       tmp_2d(j,i) = surf_usm_h%ssws(m)
    916                    ENDDO
    917 
    918                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    919 
    920                    DO  i = nxlg, nxrg
    921                       DO  j = nysg, nyng
    922                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    923                       ENDDO
    924                    ENDDO
    925                 ELSE
    926                    DO  i = nxlg, nxrg
    927                       DO  j = nysg, nyng
     888                      local_pf(i,j,nzb+1) = surf_usm_h%ssws(m)
     889                   ENDDO
     890                ELSE
     891                   DO  i = nxl, nxr
     892                      DO  j = nys, nyn
    928893                         local_pf(i,j,nzb+1) =  ssws_av(j,i)
    929894                      ENDDO
     
    939904                      i = surf_def_h(0)%i(m)
    940905                      j = surf_def_h(0)%j(m)
    941                       tmp_2d(j,i) = surf_def_h(0)%ts(m)
     906                      local_pf(i,j,nzb+1) = surf_def_h(0)%ts(m)
    942907                   ENDDO
    943908                   DO  m = 1, surf_lsm_h%ns
    944909                      i = surf_lsm_h%i(m)
    945910                      j = surf_lsm_h%j(m)
    946                       tmp_2d(j,i) = surf_lsm_h%ts(m)
     911                      local_pf(i,j,nzb+1) = surf_lsm_h%ts(m)
    947912                   ENDDO
    948913                   DO  m = 1, surf_usm_h%ns
    949914                      i = surf_usm_h%i(m)
    950915                      j = surf_usm_h%j(m)
    951                       tmp_2d(j,i) = surf_usm_h%ts(m)
    952                    ENDDO
    953 
    954                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    955 
    956                    DO  i = nxlg, nxrg
    957                       DO  j = nysg, nyng
    958                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    959                       ENDDO
    960                    ENDDO
    961 
    962                 ELSE
    963                    DO  i = nxlg, nxrg
    964                       DO  j = nysg, nyng
     916                      local_pf(i,j,nzb+1) = surf_usm_h%ts(m)
     917                   ENDDO
     918                ELSE
     919                   DO  i = nxl, nxr
     920                      DO  j = nys, nyn
    965921                         local_pf(i,j,nzb+1) = ts_av(j,i)
    966922                      ENDDO
     
    990946                      i = surf_def_h(0)%i(m)
    991947                      j = surf_def_h(0)%j(m)
    992                       tmp_2d(j,i) = surf_def_h(0)%us(m)
     948                      local_pf(i,j,nzb+1) = surf_def_h(0)%us(m)
    993949                   ENDDO
    994950                   DO  m = 1, surf_lsm_h%ns
    995951                      i = surf_lsm_h%i(m)
    996952                      j = surf_lsm_h%j(m)
    997                       tmp_2d(j,i) = surf_lsm_h%us(m)
     953                      local_pf(i,j,nzb+1) = surf_lsm_h%us(m)
    998954                   ENDDO
    999955                   DO  m = 1, surf_usm_h%ns
    1000956                      i = surf_usm_h%i(m)
    1001957                      j = surf_usm_h%j(m)
    1002                       tmp_2d(j,i) = surf_usm_h%us(m)
    1003                    ENDDO
    1004 
    1005                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    1006 
    1007                    DO  i = nxlg, nxrg
    1008                       DO  j = nysg, nyng
    1009                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    1010                       ENDDO
    1011                    ENDDO
    1012                 ELSE
    1013                    DO  i = nxlg, nxrg
    1014                       DO  j = nysg, nyng
     958                      local_pf(i,j,nzb+1) = surf_usm_h%us(m)
     959                   ENDDO
     960                ELSE
     961                   DO  i = nxl, nxr
     962                      DO  j = nys, nyn
    1015963                         local_pf(i,j,nzb+1) = us_av(j,i)
    1016964                      ENDDO
     
    10561004                      i = surf_def_h(0)%i(m)
    10571005                      j = surf_def_h(0)%j(m)
    1058                       tmp_2d(j,i) = surf_def_h(0)%z0(m)
     1006                      local_pf(i,j,nzb+1) = surf_def_h(0)%z0(m)
    10591007                   ENDDO
    10601008                   DO  m = 1, surf_lsm_h%ns
    10611009                      i = surf_lsm_h%i(m)
    10621010                      j = surf_lsm_h%j(m)
    1063                       tmp_2d(j,i) = surf_lsm_h%z0(m)
     1011                      local_pf(i,j,nzb+1) = surf_lsm_h%z0(m)
    10641012                   ENDDO
    10651013                   DO  m = 1, surf_usm_h%ns
    10661014                      i = surf_usm_h%i(m)
    10671015                      j = surf_usm_h%j(m)
    1068                       tmp_2d(j,i) = surf_usm_h%z0(m)
    1069                    ENDDO
    1070 
    1071                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    1072 
    1073                    DO  i = nxlg, nxrg
    1074                       DO  j = nysg, nyng
    1075                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    1076                       ENDDO
    1077                    ENDDO
    1078 
    1079                 ELSE
    1080                    DO  i = nxlg, nxrg
    1081                       DO  j = nysg, nyng
     1016                      local_pf(i,j,nzb+1) = surf_usm_h%z0(m)
     1017                   ENDDO
     1018                ELSE
     1019                   DO  i = nxl, nxr
     1020                      DO  j = nys, nyn
    10821021                         local_pf(i,j,nzb+1) =  z0_av(j,i)
    10831022                      ENDDO
     
    10931032                      i = surf_def_h(0)%i(m)
    10941033                      j = surf_def_h(0)%j(m)
    1095                       tmp_2d(j,i) = surf_def_h(0)%z0h(m)
     1034                      local_pf(i,j,nzb+1) = surf_def_h(0)%z0h(m)
    10961035                   ENDDO
    10971036                   DO  m = 1, surf_lsm_h%ns
    10981037                      i = surf_lsm_h%i(m)
    10991038                      j = surf_lsm_h%j(m)
    1100                       tmp_2d(j,i) = surf_lsm_h%z0h(m)
     1039                      local_pf(i,j,nzb+1) = surf_lsm_h%z0h(m)
    11011040                   ENDDO
    11021041                   DO  m = 1, surf_usm_h%ns
    11031042                      i = surf_usm_h%i(m)
    11041043                      j = surf_usm_h%j(m)
    1105                       tmp_2d(j,i) = surf_usm_h%z0h(m)
    1106                    ENDDO
    1107 
    1108                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    1109 
    1110                    DO  i = nxlg, nxrg
    1111                       DO  j = nysg, nyng
    1112                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    1113                       ENDDO
    1114                    ENDDO
    1115                 ELSE
    1116                    DO  i = nxlg, nxrg
    1117                       DO  j = nysg, nyng
     1044                      local_pf(i,j,nzb+1) = surf_usm_h%z0h(m)
     1045                   ENDDO
     1046                ELSE
     1047                   DO  i = nxl, nxr
     1048                      DO  j = nys, nyn
    11181049                         local_pf(i,j,nzb+1) =  z0h_av(j,i)
    11191050                      ENDDO
     
    11291060                      i = surf_def_h(0)%i(m)
    11301061                      j = surf_def_h(0)%j(m)
    1131                       tmp_2d(j,i) = surf_def_h(0)%z0q(m)
     1062                      local_pf(i,j,nzb+1) = surf_def_h(0)%z0q(m)
    11321063                   ENDDO
    11331064                   DO  m = 1, surf_lsm_h%ns
    11341065                      i = surf_lsm_h%i(m)
    11351066                      j = surf_lsm_h%j(m)
    1136                       tmp_2d(j,i) = surf_lsm_h%z0q(m)
     1067                      local_pf(i,j,nzb+1) = surf_lsm_h%z0q(m)
    11371068                   ENDDO
    11381069                   DO  m = 1, surf_usm_h%ns
    11391070                      i = surf_usm_h%i(m)
    11401071                      j = surf_usm_h%j(m)
    1141                       tmp_2d(j,i) = surf_usm_h%z0q(m)
    1142                    ENDDO
    1143 
    1144                    CALL exchange_horiz_2d( tmp_2d, nbgp )
    1145 
    1146                    DO  i = nxlg, nxrg
    1147                       DO  j = nysg, nyng
    1148                          local_pf(i,j,nzb+1) = tmp_2d(j,i)
    1149                       ENDDO
    1150                    ENDDO
    1151                 ELSE
    1152                    DO  i = nxlg, nxrg
    1153                       DO  j = nysg, nyng
     1072                      local_pf(i,j,nzb+1) = surf_usm_h%z0q(m)
     1073                   ENDDO
     1074                ELSE
     1075                   DO  i = nxl, nxr
     1076                      DO  j = nys, nyn
    11541077                         local_pf(i,j,nzb+1) =  z0q_av(j,i)
    11551078                      ENDDO
     
    12061129!--       Resort the array to be output, if not done above
    12071130          IF ( .NOT. resorted )  THEN
    1208              DO  i = nxlg, nxrg
    1209                 DO  j = nysg, nyng
     1131             DO  i = nxl, nxr
     1132                DO  j = nys, nyn
    12101133                   DO  k = nzb_do, nzt_do
    12111134                      local_pf(i,j,k) = to_be_resorted(k,j,i)
     
    12691192!--                   Carry out the averaging (all data are on the PE)
    12701193                      DO  k = nzb_do, nzt_do
    1271                          DO  j = nysg, nyng
    1272                             DO  i = nxlg, nxrg
     1194                         DO  j = nys, nyn
     1195                            DO  i = nxl, nxr
    12731196                               local_2d(i,j) = local_2d(i,j) + local_pf(i,j,k)
    12741197                            ENDDO
     
    13001223!--                   here on a local array and will be written to the output
    13011224!--                   file afterwards to increase the performance.
    1302                       DO  i = nxlg, nxrg
    1303                          DO  j = nysg, nyng
     1225                      DO  i = nxl, nxr
     1226                         DO  j = nys, nyn
    13041227                            local_2d_sections(i,j,iis) = local_2d(i,j)
    13051228                         ENDDO
     
    13191242                         DO  i = 0, io_blocks-1
    13201243                            IF ( i == io_group )  THEN
    1321                                WRITE ( 21 )  nxlg, nxrg, nysg, nyng, nysg, nyng
     1244                               WRITE ( 21 )  nxl, nxr, nys, nyn, nys, nyn
    13221245                               WRITE ( 21 )  local_2d
    13231246                            ENDIF
     
    13351258                         CALL MPI_BARRIER( comm2d, ierr )
    13361259
    1337                          ngp = ( nxrg-nxlg+1 ) * ( nyng-nysg+1 )
     1260                         ngp = ( nxr-nxl+1 ) * ( nyn-nys+1 )
    13381261                         IF ( myid == 0 )  THEN
    13391262!
    13401263!--                         Local array can be relocated directly.
    1341                             total_2d(nxlg:nxrg,nysg:nyng) = local_2d
     1264                            total_2d(nxl:nxr,nys:nyn) = local_2d
    13421265!
    13431266!--                         Receive data from all other PEs.
     
    13611284!--                         Relocate the local array for the next loop increment
    13621285                            DEALLOCATE( local_2d )
    1363                             ALLOCATE( local_2d(nxlg:nxrg,nysg:nyng) )
     1286                            ALLOCATE( local_2d(nxl:nxr,nys:nyn) )
    13641287
    13651288#if defined( __netcdf )
     
    13671290                               nc_stat = NF90_PUT_VAR( id_set_xy(av),       &
    13681291                                                       id_var_do2d(av,if),  &
    1369                                                    total_2d(0:nx+1,0:ny+1), &
     1292                                                       total_2d(0:nx,0:ny), &
    13701293                             start = (/ 1, 1, 1, do2d_xy_time_count(av) /), &
    1371                                              count = (/ nx+2, ny+2, 1, 1 /) )
     1294                                             count = (/ nx+1, ny+1, 1, 1 /) )
    13721295                            ELSE
    13731296                               nc_stat = NF90_PUT_VAR( id_set_xy(av),       &
    13741297                                                       id_var_do2d(av,if),  &
    1375                                                    total_2d(0:nx+1,0:ny+1), &
     1298                                                       total_2d(0:nx,0:ny), &
    13761299                            start = (/ 1, 1, is, do2d_xy_time_count(av) /), &
    1377                                              count = (/ nx+2, ny+2, 1, 1 /) )
     1300                                             count = (/ nx+1, ny+1, 1, 1 /) )
    13781301                            ENDIF
    13791302                            CALL netcdf_handle_error( 'data_output_2d', 54 )
     
    13831306!
    13841307!--                         First send the local index limits to PE0
    1385                             ind(1) = nxlg; ind(2) = nxrg
    1386                             ind(3) = nysg; ind(4) = nyng
     1308                            ind(1) = nxl; ind(2) = nxr
     1309                            ind(3) = nys; ind(4) = nyn
    13871310                            CALL MPI_SEND( ind(1), 4, MPI_INTEGER, 0, 0,       &
    13881311                                           comm2d, ierr )
    13891312!
    13901313!--                         Send data to PE0
    1391                             CALL MPI_SEND( local_2d(nxlg,nysg), ngp,           &
     1314                            CALL MPI_SEND( local_2d(nxl,nys), ngp,             &
    13921315                                           MPI_REAL, 0, 1, comm2d, ierr )
    13931316                         ENDIF
     
    14051328                      nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    14061329                                              id_var_do2d(av,if),           &
    1407                                              local_2d(nxl:nxr+1,nys:nyn+1), &
     1330                                              local_2d(nxl:nxr,nys:nyn),    &
    14081331                             start = (/ 1, 1, 1, do2d_xy_time_count(av) /), &
    1409                                            count = (/ nx+2, ny+2, 1, 1 /) )
     1332                                           count = (/ nx+1, ny+1, 1, 1 /) )
    14101333                   ELSE
    14111334                      nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    14121335                                              id_var_do2d(av,if),           &
    1413                                              local_2d(nxl:nxr+1,nys:nyn+1), &
     1336                                              local_2d(nxl:nxr,nys:nyn),    &
    14141337                            start = (/ 1, 1, is, do2d_xy_time_count(av) /), &
    1415                                            count = (/ nx+2, ny+2, 1, 1 /) )
     1338                                           count = (/ nx+1, ny+1, 1, 1 /) )
    14161339                   ENDIF
    14171340                   CALL netcdf_handle_error( 'data_output_2d', 447 )
     
    14551378                   IF ( section(is,s_ind) == -1 )  THEN
    14561379
    1457                       ALLOCATE( local_2d_l(nxlg:nxrg,nzb_do:nzt_do) )
     1380                      ALLOCATE( local_2d_l(nxl:nxr,nzb_do:nzt_do) )
    14581381                      local_2d_l = 0.0_wp
    1459                       ngp = ( nxrg-nxlg + 1 ) * ( nzt_do-nzb_do + 1 )
     1382                      ngp = ( nxr-nxl + 1 ) * ( nzt_do-nzb_do + 1 )
    14601383!
    14611384!--                   First local averaging on the PE
    14621385                      DO  k = nzb_do, nzt_do
    14631386                         DO  j = nys, nyn
    1464                             DO  i = nxlg, nxrg
     1387                            DO  i = nxl, nxr
    14651388                               local_2d_l(i,k) = local_2d_l(i,k) +             &
    14661389                                                 local_pf(i,j,k)
     
    14721395!--                   Now do the averaging over all PEs along y
    14731396                      IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
    1474                       CALL MPI_ALLREDUCE( local_2d_l(nxlg,nzb_do),                &
    1475                                           local_2d(nxlg,nzb_do), ngp, MPI_REAL,   &
     1397                      CALL MPI_ALLREDUCE( local_2d_l(nxl,nzb_do),                &
     1398                                          local_2d(nxl,nzb_do), ngp, MPI_REAL,   &
    14761399                                          MPI_SUM, comm1dy, ierr )
    14771400#else
     
    15081431!--                      stored here on a local array and will be written to the
    15091432!--                      output file afterwards to increase the performance.
    1510                          DO  i = nxlg, nxrg
     1433                         DO  i = nxl, nxr
    15111434                            DO  k = nzb_do, nzt_do
    15121435                               local_2d_sections_l(i,is,k) = local_2d(i,k)
     
    15361459                                      nys-1 == -1 ) )                          &
    15371460                               THEN
    1538                                   WRITE (22)  nxlg, nxrg, nzb_do, nzt_do, nzb, nzt+1
     1461                                  WRITE (22)  nxl, nxr, nzb_do, nzt_do, nzb, nzt+1
    15391462                                  WRITE (22)  local_2d
    15401463                               ELSE
     
    15551478                         CALL MPI_BARRIER( comm2d, ierr )
    15561479
    1557                          ngp = ( nxrg-nxlg + 1 ) * ( nzt_do-nzb_do + 1 )
     1480                         ngp = ( nxr-nxl + 1 ) * ( nzt_do-nzb_do + 1 )
    15581481                         IF ( myid == 0 )  THEN
    15591482!
     
    15631486                                 ( section(is,s_ind) == -1  .AND.               &
    15641487                                   nys-1 == -1 ) )  THEN
    1565                                total_2d(nxlg:nxrg,nzb_do:nzt_do) = local_2d
     1488                               total_2d(nxl:nxr,nzb_do:nzt_do) = local_2d
    15661489                            ENDIF
    15671490!
     
    15921515!--                         Relocate the local array for the next loop increment
    15931516                            DEALLOCATE( local_2d )
    1594                             ALLOCATE( local_2d(nxlg:nxrg,nzb_do:nzt_do) )
     1517                            ALLOCATE( local_2d(nxl:nxr,nzb_do:nzt_do) )
    15951518
    15961519#if defined( __netcdf )
    1597                             nc_stat = NF90_PUT_VAR( id_set_xz(av),          &
    1598                                                  id_var_do2d(av,if),        &
    1599                                                  total_2d(0:nx+1,nzb_do:nzt_do),&
    1600                             start = (/ 1, is, 1, do2d_xz_time_count(av) /), &
    1601                                              count = (/ nx+2, 1, nzt_do-nzb_do+1, 1 /) )
     1520                            nc_stat = NF90_PUT_VAR( id_set_xz(av),             &
     1521                                                 id_var_do2d(av,if),           &
     1522                                                 total_2d(0:nx,nzb_do:nzt_do), &
     1523                               start = (/ 1, is, 1, do2d_xz_time_count(av) /), &
     1524                                          count = (/ nx+1, 1, nzt_do-nzb_do+1, 1 /) )
    16021525                            CALL netcdf_handle_error( 'data_output_2d', 58 )
    16031526#endif
     
    16111534                                 ( section(is,s_ind) == -1  .AND.  nys-1 == -1 ) ) &
    16121535                            THEN
    1613                                ind(1) = nxlg; ind(2) = nxrg
     1536                               ind(1) = nxl; ind(2) = nxr
    16141537                               ind(3) = nzb_do;   ind(4) = nzt_do
    16151538                            ELSE
     
    16221545!--                         If applicable, send data to PE0.
    16231546                            IF ( ind(1) /= -9999 )  THEN
    1624                                CALL MPI_SEND( local_2d(nxlg,nzb_do), ngp,         &
     1547                               CALL MPI_SEND( local_2d(nxl,nzb_do), ngp,         &
    16251548                                              MPI_REAL, 0, 1, comm2d, ierr )
    16261549                            ENDIF
     
    16381561                   nc_stat = NF90_PUT_VAR( id_set_xz(av),                   &
    16391562                                           id_var_do2d(av,if),              &
    1640                                            local_2d(nxl:nxr+1,nzb_do:nzt_do),  &
     1563                                           local_2d(nxl:nxr,nzb_do:nzt_do), &
    16411564                            start = (/ 1, is, 1, do2d_xz_time_count(av) /), &
    1642                                            count = (/ nx+2, 1, nzt_do-nzb_do+1, 1 /) )
     1565                                       count = (/ nx+1, 1, nzt_do-nzb_do+1, 1 /) )
    16431566                   CALL netcdf_handle_error( 'data_output_2d', 451 )
    16441567#endif
     
    16731596                   IF ( section(is,s_ind) == -1 )  THEN
    16741597
    1675                       ALLOCATE( local_2d_l(nysg:nyng,nzb_do:nzt_do) )
     1598                      ALLOCATE( local_2d_l(nys:nyn,nzb_do:nzt_do) )
    16761599                      local_2d_l = 0.0_wp
    1677                       ngp = ( nyng-nysg+1 ) * ( nzt_do-nzb_do+1 )
     1600                      ngp = ( nyn-nys+1 ) * ( nzt_do-nzb_do+1 )
    16781601!
    16791602!--                   First local averaging on the PE
    16801603                      DO  k = nzb_do, nzt_do
    1681                          DO  j = nysg, nyng
     1604                         DO  j = nys, nyn
    16821605                            DO  i = nxl, nxr
    16831606                               local_2d_l(j,k) = local_2d_l(j,k) +             &
     
    16901613!--                   Now do the averaging over all PEs along x
    16911614                      IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
    1692                       CALL MPI_ALLREDUCE( local_2d_l(nysg,nzb_do),                &
    1693                                           local_2d(nysg,nzb_do), ngp, MPI_REAL,   &
     1615                      CALL MPI_ALLREDUCE( local_2d_l(nys,nzb_do),                &
     1616                                          local_2d(nys,nzb_do), ngp, MPI_REAL,   &
    16941617                                          MPI_SUM, comm1dx, ierr )
    16951618#else
     
    17261649!--                      stored here on a local array and will be written to the
    17271650!--                      output file afterwards to increase the performance.
    1728                          DO  j = nysg, nyng
     1651                         DO  j = nys, nyn
    17291652                            DO  k = nzb_do, nzt_do
    17301653                               local_2d_sections_l(is,j,k) = local_2d(j,k)
     
    17541677                                      nxl-1 == -1 ) )                          &
    17551678                               THEN
    1756                                   WRITE (23)  nysg, nyng, nzb_do, nzt_do, nzb, nzt+1
     1679                                  WRITE (23)  nys, nyn, nzb_do, nzt_do, nzb, nzt+1
    17571680                                  WRITE (23)  local_2d
    17581681                               ELSE
     
    17731696                         CALL MPI_BARRIER( comm2d, ierr )
    17741697
    1775                          ngp = ( nyng-nysg+1 ) * ( nzt_do-nzb_do+1 )
     1698                         ngp = ( nyn-nys+1 ) * ( nzt_do-nzb_do+1 )
    17761699                         IF ( myid == 0 )  THEN
    17771700!
     
    17811704                                 ( section(is,s_ind) == -1  .AND.  nxl-1 == -1 ) ) &
    17821705                            THEN
    1783                                total_2d(nysg:nyng,nzb_do:nzt_do) = local_2d
     1706                               total_2d(nys:nyn,nzb_do:nzt_do) = local_2d
    17841707                            ENDIF
    17851708!
     
    18101733!--                         Relocate the local array for the next loop increment
    18111734                            DEALLOCATE( local_2d )
    1812                             ALLOCATE( local_2d(nysg:nyng,nzb_do:nzt_do) )
     1735                            ALLOCATE( local_2d(nys:nyn,nzb_do:nzt_do) )
    18131736
    18141737#if defined( __netcdf )
    1815                             nc_stat = NF90_PUT_VAR( id_set_yz(av),          &
    1816                                                  id_var_do2d(av,if),        &
    1817                                                  total_2d(0:ny+1,nzb_do:nzt_do),&
    1818                             start = (/ is, 1, 1, do2d_yz_time_count(av) /), &
    1819                                              count = (/ 1, ny+2, nzt_do-nzb_do+1, 1 /) )
     1738                            nc_stat = NF90_PUT_VAR( id_set_yz(av),             &
     1739                                                 id_var_do2d(av,if),           &
     1740                                                 total_2d(0:ny,nzb_do:nzt_do), &
     1741                            start = (/ is, 1, 1, do2d_yz_time_count(av) /),    &
     1742                                       count = (/ 1, ny+1, nzt_do-nzb_do+1, 1 /) )
    18201743                            CALL netcdf_handle_error( 'data_output_2d', 61 )
    18211744#endif
     
    18291752                                 ( section(is,s_ind) == -1  .AND.  nxl-1 == -1 ) ) &
    18301753                            THEN
    1831                                ind(1) = nysg; ind(2) = nyng
     1754                               ind(1) = nys; ind(2) = nyn
    18321755                               ind(3) = nzb_do;   ind(4) = nzt_do
    18331756                            ELSE
     
    18401763!--                         If applicable, send data to PE0.
    18411764                            IF ( ind(1) /= -9999 )  THEN
    1842                                CALL MPI_SEND( local_2d(nysg,nzb_do), ngp,         &
     1765                               CALL MPI_SEND( local_2d(nys,nzb_do), ngp,         &
    18431766                                              MPI_REAL, 0, 1, comm2d, ierr )
    18441767                            ENDIF
     
    18561779                   nc_stat = NF90_PUT_VAR( id_set_yz(av),                   &
    18571780                                           id_var_do2d(av,if),              &
    1858                                            local_2d(nys:nyn+1,nzb_do:nzt_do),  &
     1781                                           local_2d(nys:nyn,nzb_do:nzt_do), &
    18591782                            start = (/ is, 1, 1, do2d_xz_time_count(av) /), &
    1860                                            count = (/ 1, ny+2, nzt_do-nzb_do+1, 1 /) )
     1783                                           count = (/ 1, ny+1, nzt_do-nzb_do+1, 1 /) )
    18611784                   CALL netcdf_handle_error( 'data_output_2d', 452 )
    18621785#endif
     
    18871810!--                   Do not output redundant ghost point data except for the
    18881811!--                   boundaries of the total domain.
    1889                       IF ( nxr == nx  .AND.  nyn /= ny )  THEN
    1890                          nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    1891                                                  id_var_do2d(av,if),           &
    1892                                                  local_2d_sections(nxl:nxr+1,  &
    1893                                                     nys:nyn,1:nis),            &
    1894                                                  start = (/ nxl+1, nys+1, 1,   &
    1895                                                     do2d_xy_time_count(av) /), &
    1896                                                  count = (/ nxr-nxl+2,         &
    1897                                                             nyn-nys+1, nis, 1  &
    1898                                                           /) )
    1899                       ELSEIF ( nxr /= nx  .AND.  nyn == ny )  THEN
    1900                          nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    1901                                                  id_var_do2d(av,if),           &
    1902                                                  local_2d_sections(nxl:nxr,    &
    1903                                                     nys:nyn+1,1:nis),          &
    1904                                                  start = (/ nxl+1, nys+1, 1,   &
    1905                                                     do2d_xy_time_count(av) /), &
    1906                                                  count = (/ nxr-nxl+1,         &
    1907                                                             nyn-nys+2, nis, 1  &
    1908                                                           /) )
    1909                       ELSEIF ( nxr == nx  .AND.  nyn == ny )  THEN
    1910                          nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    1911                                                  id_var_do2d(av,if),           &
    1912                                                  local_2d_sections(nxl:nxr+1,  &
    1913                                                     nys:nyn+1,1:nis),          &
    1914                                                  start = (/ nxl+1, nys+1, 1,   &
    1915                                                     do2d_xy_time_count(av) /), &
    1916                                                  count = (/ nxr-nxl+2,         &
    1917                                                             nyn-nys+2, nis, 1  &
    1918                                                           /) )
    1919                       ELSE
     1812!                      IF ( nxr == nx  .AND.  nyn /= ny )  THEN
     1813!                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
     1814!                                                 id_var_do2d(av,if),           &
     1815!                                                 local_2d_sections(nxl:nxr+1,  &
     1816!                                                    nys:nyn,1:nis),            &
     1817!                                                 start = (/ nxl+1, nys+1, 1,   &
     1818!                                                    do2d_xy_time_count(av) /), &
     1819!                                                 count = (/ nxr-nxl+2,         &
     1820!                                                            nyn-nys+1, nis, 1  &
     1821!                                                          /) )
     1822!                      ELSEIF ( nxr /= nx  .AND.  nyn == ny )  THEN
     1823!                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
     1824!                                                 id_var_do2d(av,if),           &
     1825!                                                 local_2d_sections(nxl:nxr,    &
     1826!                                                    nys:nyn+1,1:nis),          &
     1827!                                                 start = (/ nxl+1, nys+1, 1,   &
     1828!                                                    do2d_xy_time_count(av) /), &
     1829!                                                 count = (/ nxr-nxl+1,         &
     1830!                                                            nyn-nys+2, nis, 1  &
     1831!                                                          /) )
     1832!                      ELSEIF ( nxr == nx  .AND.  nyn == ny )  THEN
     1833!                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
     1834!                                                 id_var_do2d(av,if),           &
     1835!                                                 local_2d_sections(nxl:nxr+1,  &
     1836!                                                    nys:nyn+1,1:nis),          &
     1837!                                                 start = (/ nxl+1, nys+1, 1,   &
     1838!                                                    do2d_xy_time_count(av) /), &
     1839!                                                 count = (/ nxr-nxl+2,         &
     1840!                                                            nyn-nys+2, nis, 1  &
     1841!                                                          /) )
     1842!                      ELSE
    19201843                         nc_stat = NF90_PUT_VAR( id_set_xy(av),                &
    19211844                                                 id_var_do2d(av,if),           &
     
    19271850                                                            nyn-nys+1, nis, 1  &
    19281851                                                          /) )
    1929                       ENDIF   
     1852!                      ENDIF   
    19301853
    19311854                      CALL netcdf_handle_error( 'data_output_2d', 55 )
     
    19461869!
    19471870!--                      Distribute data over all PEs along y
    1948                          ngp = ( nxrg-nxlg+1 ) * ( nzt_do-nzb_do+1 ) * ns
     1871                         ngp = ( nxr-nxl+1 ) * ( nzt_do-nzb_do+1 ) * ns
    19491872                         IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr )
    1950                          CALL MPI_ALLREDUCE( local_2d_sections_l(nxlg,1,nzb_do),  &
    1951                                              local_2d_sections(nxlg,1,nzb_do),    &
     1873                         CALL MPI_ALLREDUCE( local_2d_sections_l(nxl,1,nzb_do),  &
     1874                                             local_2d_sections(nxl,1,nzb_do),    &
    19521875                                             ngp, MPI_REAL, MPI_SUM, comm1dy,  &
    19531876                                             ierr )
     
    19591882!--                   Do not output redundant ghost point data except for the
    19601883!--                   boundaries of the total domain.
    1961                       IF ( nxr == nx )  THEN
    1962                          nc_stat = NF90_PUT_VAR( id_set_xz(av),                &
    1963                                              id_var_do2d(av,if),               &
    1964                                              local_2d_sections(nxl:nxr+1,1:ns, &
    1965                                                 nzb_do:nzt_do),                &
    1966                                              start = (/ nxl+1, 1, 1,           &
    1967                                                 do2d_xz_time_count(av) /),     &
    1968                                              count = (/ nxr-nxl+2, ns, nzt_do-nzb_do+1,  &
    1969                                                         1 /) )
    1970                       ELSE
     1884!                      IF ( nxr == nx )  THEN
     1885!                         nc_stat = NF90_PUT_VAR( id_set_xz(av),                &
     1886!                                             id_var_do2d(av,if),               &
     1887!                                             local_2d_sections(nxl:nxr+1,1:ns, &
     1888!                                                nzb_do:nzt_do),                &
     1889!                                             start = (/ nxl+1, 1, 1,           &
     1890!                                                do2d_xz_time_count(av) /),     &
     1891!                                             count = (/ nxr-nxl+2, ns, nzt_do-nzb_do+1,  &
     1892!                                                        1 /) )
     1893!                      ELSE
    19711894                         nc_stat = NF90_PUT_VAR( id_set_xz(av),                &
    19721895                                             id_var_do2d(av,if),               &
     
    19771900                                             count = (/ nxr-nxl+1, ns, nzt_do-nzb_do+1,  &
    19781901                                                1 /) )
    1979                       ENDIF
     1902!                      ENDIF
    19801903
    19811904                      CALL netcdf_handle_error( 'data_output_2d', 57 )
     
    19961919!
    19971920!--                      Distribute data over all PEs along x
    1998                          ngp = ( nyng-nysg+1 ) * ( nzt-nzb + 2 ) * ns
     1921                         ngp = ( nyn-nys+1 ) * ( nzt-nzb + 2 ) * ns
    19991922                         IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr )
    2000                          CALL MPI_ALLREDUCE( local_2d_sections_l(1,nysg,nzb_do),  &
    2001                                              local_2d_sections(1,nysg,nzb_do),    &
     1923                         CALL MPI_ALLREDUCE( local_2d_sections_l(1,nys,nzb_do),  &
     1924                                             local_2d_sections(1,nys,nzb_do),    &
    20021925                                             ngp, MPI_REAL, MPI_SUM, comm1dx,  &
    20031926                                             ierr )
     
    20091932!--                   Do not output redundant ghost point data except for the
    20101933!--                   boundaries of the total domain.
    2011                       IF ( nyn == ny )  THEN
    2012                          nc_stat = NF90_PUT_VAR( id_set_yz(av),                &
    2013                                              id_var_do2d(av,if),               &
    2014                                              local_2d_sections(1:ns,           &
    2015                                                 nys:nyn+1,nzb_do:nzt_do),      &
    2016                                              start = (/ 1, nys+1, 1,           &
    2017                                                 do2d_yz_time_count(av) /),     &
    2018                                              count = (/ ns, nyn-nys+2,         &
    2019                                                         nzt_do-nzb_do+1, 1 /) )
    2020                       ELSE
     1934!                      IF ( nyn == ny )  THEN
     1935!                         nc_stat = NF90_PUT_VAR( id_set_yz(av),                &
     1936!                                             id_var_do2d(av,if),               &
     1937!                                             local_2d_sections(1:ns,           &
     1938!                                                nys:nyn+1,nzb_do:nzt_do),      &
     1939!                                             start = (/ 1, nys+1, 1,           &
     1940!                                                do2d_yz_time_count(av) /),     &
     1941!                                             count = (/ ns, nyn-nys+2,         &
     1942!                                                        nzt_do-nzb_do+1, 1 /) )
     1943!                      ELSE
    20211944                         nc_stat = NF90_PUT_VAR( id_set_yz(av),                &
    20221945                                             id_var_do2d(av,if),               &
     
    20271950                                             count = (/ ns, nyn-nys+1,         &
    20281951                                                        nzt_do-nzb_do+1, 1 /) )
    2029                       ENDIF
     1952!                      ENDIF
    20301953
    20311954                      CALL netcdf_handle_error( 'data_output_2d', 60 )
Note: See TracChangeset for help on using the changeset viewer.